我正在尝试设计一个在实例化为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;
}
}