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)];
}

10-08 02:10