在Wiki中找到以下声明:
C++ 11引入了constexpr声明函数的概念; 一个可以在编译时执行的函数.它们的返回值可能由需要常量表达式的操作使用,例如整数模板参数.但是,C++ 11 constexpr函数只能包含一个返回的表达式(以及static_asserts和少量其他声明).
C++ 14放宽了这些限制.Constexpr声明的函数现在可以包含以下内容:条件
- ...
- 分支声明
if和switch
那么,实际上是否可以在c ++ 14/c ++ 17中的constexpr函数中进行切换?而且,如果可能的话,那是什么语法?例如,我想要这样的东西:
enum class Terrain : std::uintmax_t {
ROAD,
SOIL,
GRASS,
MUD,
SNOW,
};
constexpr float
getStepPrice(Terrain const& terrain)
{
switch constexpr (terrain)
{
case Terrain::ROAD: return 1.0f;
...
}
}
Run Code Online (Sandbox Code Playgroud)