如何在类特化中拥有任何标签的enum
类型?
因为这只适用于一个,即。 L 枚举
:
enum class K
{
a, b, c, d, e
};
enum class L
{
a, c, e,
};
template<enum L>
struct J
{
constexpr static int N = static_cast<int>(L::e);
int n[N] = { 7 };
void print()
{
cout << N << "\n";
}
};
int main()
{
J <L::e> obj;
obj.print();
return 0;
}
如何让它像 K
和任何枚举标签一样通用,只要它具有相同的 e 成员名称?
最佳答案
如果你可以再提供一个模板参数,你可以传递任何enum
template<typename Type, Type en>
struct J
{
// ...
}
并构建对象
J <K, K::e> obj;
obj.print();
( See demo online )
同时使用 std::is_enum
检查传递的 Type
,您可以限制传递的模板类型。
关于c++ - 在类特化中具有任何标签的枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62242391/