【发布时间】:2017-02-09 23:35:16
【问题描述】:
有没有办法确保模板参数是枚举类类型?
我知道type_traits 有std::is_enum,但我不希望它匹配常规枚举,只匹配 enum_classes。
想要的效果示例:
enum class EnumClass {};
enum Enum {};
class Class {};
template <typename T>
void Example()
{
static_assert(/* T is EnumClass */, "`T` must be an enum class");
}
Example<EnumClass>(); // Ok
Example<Enum>(); // Error
Example<Class>(); // Error
我正在使用 C++11,不幸的是不能再高了(尽管我很想知道解决方案,即使它涉及到更新的标准)。
有可能吗?
【问题讨论】:
标签: c++ c++11 template-meta-programming