我有两种enum class
类型:Type和SocketType。在VC++ 2017中,以下代码将无法编译且失败,并出现问题中提到的消息:
static constexpr std::map<Type,SocketType> PacketTypeMap =
{
{Type::JUSTJOINED, SocketType::TCP},
{Type::CHAT_MESSAGE, SocketType::TCP},
{Type::REQUEST_WORLD, SocketType::TCP},
{Type::DATA_WORLD, SocketType::TCP},
{Type::DATA_PLAYER, SocketType::UDP},
{Type::RESPAWN_PLAYER, SocketType::TCP}
};
一直在尝试一些变体,但没有任何效果,但是我敢肯定我只是在语法上缺少一些简单的东西。
最佳答案
std::map
与constexpr
不兼容。存在一个称为frozen的实验性(?)库,该库提供了constexpr
兼容的frozen::map
(除了frozen::unordered_map
,frozen::string
等)。
但是,很可能您只是想选择一个更简单的解决方案(例如,constexpr函数中的switch
语句)。