小编RaB*_*RaB的帖子

如何为底层类型int的枚举专门化一个类?

#include <type_traits>

enum class MyEnum
{
    Hello
};

template <typename T, typename Enable = void>
class MyClass
{
public:
    MyClass(T obj) : e(obj)
    {}

private:
    T e;
};

template <typename T>
class MyClass <T, 
    typename std::enable_if< std::is_enum<T>::value 
                             && std::is_same<typename std::underlying_type<T>::type, 
                                             int>::value>::type > 
{
public:
    MyClass(T obj) : e(obj)
    {}

private:
    T e;
};

int main()
{
    MyClass<MyEnum> c(MyEnum::Hello);
    MyClass<int> c1(1); //does not compile due to std::underlying_type
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够将MyClass专门用于底层类型'int'的枚举.我不能使用std :: underlying_type这样做,因为它只针对枚举.关于如何进行的任何想法?

c++ c++11

8
推荐指数
1
解决办法
357
查看次数

标签 统计

c++ ×1

c++11 ×1