C++14 or later で constexpr で std::map 的にリードオンリー連想配列を作るメモ
背景
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 などを使えばいけるか?)
Author And Source
この問題について(C++14 or later で constexpr で std::map 的にリードオンリー連想配列を作るメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/syoyo/items/14eea49ddbf89e17f043著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .