在Wiki中找到以下语句:
那么,实际上可以在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;
...
}
}
最佳答案
是的。
语法绝对没有什么特别的,只是普通的switch
。像这样:
constexpr int fun (int i) {
switch(i) {
case 0: return 7;
default: return 5;
}
}
int main () {
int arr[fun(3)];
}