我有一个类模板,我想写如下:
template </*what to put here?*/ T>
Class Bar {};
我想强制T只能是一个范围枚举的值。我使用了这里提供的is_scoped_enum
类型检查,但是我能想到的最好的方法是将Bar
更改为如下所示:
template <typename T>
concept ScopeEnum = is_scoped_enum<T>::value;
template<ScopeEnum SE, SE se>
class Bar {};
我如何实现它,使Bar
保持预期?
使用泛型非类型参数,并约束其声明
template <ScopedEnum auto se>
class Bar {};