如何直接定义Wrappable概念,无需依赖中间WrapperDisabled概念?
问题:直接定义判断模板特化的Wrappable概念
我需要一个用于识别模板特化是否已执行的concept:默认返回false,仅在完成定制(特化)时返回true。目前已通过以下代码实现该功能:
template <typename T> struct WrapperEnabled{ static constexpr const bool disabled = true; }; template <typename T> concept WrapperDisabled = WrapperEnabled<T>::disabled; template <typename T> concept Wrappable = !WrapperDisabled<T>;
Wrappable<T>默认对所有数据类型返回false,除非在代码中对WrapperEnabled进行如下特化:
template <> struct WrapperEnabled<MyClass>;
之后即可在模板声明中使用:
template<Wrappable T> class X { ... }
现在我想询问:能否直接定义Wrappable概念,无需依赖中间的WrapperDisabled概念?我尝试直接写template <typename T>concept Wrappable = (!WrapperEnabled<T>::disabled);会报错,是否有可行方案?
内容的提问来源于stack exchange,提问作者Francisco Ryan Tolmasky I
相关产品推荐
相关产品推荐

