0
如何爲所有枚舉專門設計模板。 就像它那樣boost::serialization
。枚舉模板
在升壓:
template <typename Archive>
void serialize(Archive &AR, const unsigned int ver)
{
AR & enum__;
AR & int__;
AR & class__;
}
我需要operator&
所有枚舉:
struct A
{
void operator&(int obj){std::cout << "1";}
void operator&(unsigned int obj){std::cout << "2";}
template <typename T>
typename std::enable_if<std::is_enum<T>::value,void>::type operator&(T & obj) { std::cout << "Is enum" << std::endl; }
template<typename T>
void operator&(T & obj){obj.metod(); std::cout << "3";} // this operator not for enums
};
enum enum__{AAA,BBB};
enum enum2__{AAA2,BBB2};
int main()
{
A a;
enum__ d = AAA;
a & d;
enum2__ e = AAA2;
a & e;
std::system("pause");
return 0;
}
錯誤C2593:操作員&是曖昧
你看着http://en.cppreference.com/w/cpp/types/is_enum?這可以與enable_if結合使用。 –
Get: 錯誤C2593:運算符&不明確 – manking
在相反的條件下限制其他超載不是枚舉。 –