小编0Ho*_*Tea的帖子

切换constexpr功能

Wiki中找到以下声明:

C++ 11引入了constexpr声明函数的概念; 一个可以在编译时执行的函数.它们的返回值可能由需要常量表达式的操作使用,例如整数模板参数.但是,C++ 11 constexpr函数只能包含一个返回的表达式(以及static_asserts和少量其他声明).

C++ 14放宽了这些限制.Constexpr声明的函数现在可以包含以下内容:条件

  • ...
  • 分支声明ifswitch

那么,实际上是否可以在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)

c++ constexpr c++14 c++17

4
推荐指数
2
解决办法
6005
查看次数

标签 统计

c++ ×1

c++14 ×1

c++17 ×1

constexpr ×1