背景
std::map<std::string, int> みたいなシグネチャの動的に内容変化せずリードオンリーの連想配列(変換テーブルなど)を作りたい需要はよくありますが,
constexpr std::map<std::string, int> ...
というのは直接にはできません.
ライブラリ
C++14 以降になります.
frozen 使ってみましたが, いい感じに動きました. frozen::string は std::string や .c_str() はないので, 使うにはちょっと変換いります(.data() で const char * ポインタが取得できるのでこれを使う)
デカコーンと言われる mapbox さま謹製の eternal も良さそうです. ありがとうございます.
C++17 で実現
優秀な C++ さまから, C++17(std::string_view)で super minimal constexpr map をお教えいただきました! ![]()
Super minimal conxtexpr map https://t.co/BQi27OUouP
— Антирежим Йолки (@murderotica_) February 26, 2020
素晴らしいですね, ありがとうございます.
TODO
- C++11 で実現する方法を探す(string_view-lite https://github.com/martinmoene/string-view-lite などを使えばいけるか?)