-2
發現下列語句Wiki:開關在constexpr功能
C++ 11引入constexpr聲明的函數的概念;一個 功能可能在編譯時被執行。它們的返回值 可以通過需要常量表達式運算消耗, 如整數模板參數。然而,C++ 11 constexpr 功能可以只包含返回的單個表達式(如 以及static_asserts和少量其他聲明的)。
C++ 14放鬆這些限制。 Constexpr聲明的函數現在可能 包含以下內容:有條件
- ...
- 分支語句
if
和switch
所以,它實際上是可以有一個開關constexpr函數在C++ 14/C++ 17中?而且,如果可能的話,那是什麼語法? 例如,我想有這樣的事情:
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;
...
}
}
你試過編譯過嗎? – Carcigenicate
我的意思是,這個工程:http://ideone.com/pjMrvr – kim366
@Carcigenicate,呃,哦。原來它只是我的舊g ++(4.9.2)中的一個bug。但它在第3.5次工作 –