gpt4 book ai didi

c++ - 初始化 constexpr - "illegal initialization of ' constexpr' 具有非常量表达式的实体”

转载 作者:行者123 更新时间:2023-11-28 01:26:27 26 4
gpt4 key购买 nike

我有两个 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::mapconstexpr 不兼容。存在一个名为 frozen 的实验性(?)库, 它提供了一个 constexpr 兼容的 frozen::map (除了 frozen::unordered_map, frozen::string , 和其他人)。

但是,您很可能只想选择一个更简单的解决方案(例如,constexpr 函数中的 switch 语句)。

关于c++ - 初始化 constexpr - "illegal initialization of ' constexpr' 具有非常量表达式的实体”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com