我需要初始化一个模板类的静态布尔里,我试图做到像这样。我能看到的唯一区别是我对类型参数T有一个约束,但这会导致编译错误,为什么?我该如何解决?
代码如下:
template<class T, class = typename enable_if<is_any_integral<T>::value>::type>
class fraction {
static bool auto_reduce;
// ...
};
template<class T, class = typename enable_if<is_any_integral<T>::value>::type>
bool fraction<T>::auto_reduce = true;
错误是:
错误:
fraction<T>::
声明的嵌套名称说明符“ ”未引用到类,类模板或类模板的部分专业化中
bool fraction<T>::auto_reduce = true;
也许更简单
template<class T, class V>
bool fraction<T, V>::auto_reduce = true;
当你写
template<class T, class = typename enable_if<is_any_integral<T>::value>::type>
class fraction
您说这fraction
是带有两个类型模板参数的类;在std::enable_if
如果部分是有用的默认值分配给第二个参数(并允许启用/不启用SFINAE作品),但fraction
是并保持一个模板class
有两个参数,你要引用两个,也没有必要重复使/ not enable / default部分用于第二个参数初始化auto_reduce
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句