constexpr作为开关条件

时间:2016-12-19 17:47:42

标签: c++ c++11 constexpr

我正在尝试设计一个在实例化为constexpr时行为类似于枚举类的类,因此它可以用作switch语句中的条件。该示例使用gcc 4.8.3进行编译。 为什么不在没有修改的情况下在MSVC 2015中编译?

#include <iostream>
using namespace std;
struct test{
    int id;
    char name[10];
    constexpr operator int() const{
        return id;
    }
};
int main(){
    constexpr test a{0,"hello"},b{1,"bonjour"},c{2,"ola"};
    auto k=b;
    #ifdef WIN32
    switch(k.id){
    #else
    switch(k){
    #endif
        case a:cout<<a.name<<endl;break;
        case b:cout<<b.name<<endl;break;
        case c:cout<<c.name<<endl;break;
        default:break;
    }
}

0 个答案:

没有答案