模板类中的静态成员初始化

贝克斯

我需要初始化一个模板类的静态布尔里,我试图做到像这样我能看到的唯一区别是我对类型参数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;

最高66

也许更简单

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章