模板类中的静态模板变量
Posted
技术标签:
【中文标题】模板类中的静态模板变量【英文标题】:static template variable in template class 【发布时间】:2019-05-10 06:36:44 【问题描述】:我想定义模板类的静态模板变量。但我在这里无法获得正确的语法:
template < typename T>
class X
public:
T i;
X(T _i): i_i
operator T() return i;
;
template < typename T2 >
class Y
public:
template <typename T>
static X<T> x_in_y;
;
// something like that, which currently do not compile
template< typename T2, typename T>
X<T> Y<T2>::x_in_y<T>9.9;
int main()
std::cout << Y<int>::x_in_y<float> << std::endl;
【问题讨论】:
不要在clang中使用模板类的静态模板变量成员! godbolt.org/z/dCZq7I 这会让 Clang 崩溃,或者最糟糕! @Oliv:瑞银!感谢您的提示。看来这两个编译器都有问题! 不,那只是一个 Clang 的 bug,gcc 没有这个。 【参考方案1】:x_in_y
是模板中的模板,所以需要嵌套模板声明:
template<typename T2>
template<typename T>
X<T> Y<T2>::x_in_y9.9;
【讨论】:
g++ 抱怨“X<T>
。我也错误地在我的答案中有这个。
是的,已经完成了 ;) 您能否再谈谈部分专业化?我在我的问题中添加了一些用例。谢谢!
@Klaus 你应该把它作为一个单独的问题。以上是关于模板类中的静态模板变量的主要内容,如果未能解决你的问题,请参考以下文章