constexpr映射要使用什么类型?

dar*_*une 10 c++ stdmap constexpr c++17

理想情况下,我想写:

constexpr std:map<std::string, std::string> my_map = 
  {{"key1", "val1"}, {"key2", "val2"}, };
Run Code Online (Sandbox Code Playgroud)

要么

constexpr std:unordered_map<std::string, std::string> my_map =
  {{"key1", "val1"}, {"key2", "val2"}, };
Run Code Online (Sandbox Code Playgroud)

但是都不可能(至少在当前语言是不可能的)

那还有什么选择呢?

例如,我可以做以下事情:

constexpr std::initializer_list< std::pair<const char*, const char *> > my_map = 
  {{"key1", "val1"}, {"key2", "val2"}, };
Run Code Online (Sandbox Code Playgroud)

然后在运行std::map时需要构造一个。我知道我也可以使用inline代替constexpr,但是那时我将无法在编译时使用(也许在开发的后期)。但是,这有点不令人满意(因为我不得不在运行时仅出于查找目的构造映射),我想知道:是否有更好的解决方案?