在模板中区分枚举和枚举类

时间:2019-06-03 18:53:53

标签: c++

当作为模板参数传递时,是否有办法区分枚举和枚举类。

在我的课程中,我需要将一个枚举或一个枚举类与一个整数/字节数组进行序列化。现在,对于普通的枚举,我不必严格地来回静态地转换值。我当然是为枚举类做的。*

这是我可以使用的简化示例:

tempate<class TYPE>
class X 
{
  public:
    X()
    {
      static_assert(std::is_enum<TYPE>, "Only enum and enum class allowed.");
    }

    TYPE get() 
    {
      // This is the point of interest
      if(std::is_enum_class<TYPE>::value)
      { 
        return static_cast<TYPE>(value);
      }
      else
      {
        return value;
      }
    }

  private:
    int value;
};

我正在考虑是否有一种方法可以沿std :: is_enum区分两者?

  • 是否值得打扰?这是一个高性能的实现,但是枚举的转换不是几乎是瞬时的吗?

0 个答案:

没有答案