我有一个带有嵌套模板类S<T>
的模板类S<T>::Q<M>
。内部类包含自身的静态实例。
如何在以下代码示例中对S<T>::Q<M>::q_
的定义进行编码? (标有<---- error
)的行
#include <iostream>
struct A {};
struct B {};
template<typename T>
struct S {
template<typename M>
struct Q {
int x;
Q() : x(1) {}
static Q q_;
};
};
template<typename T, typename M>
typename S<T>::template Q<M> S<T>::Q<M>::q_; // <---- error
int main()
{
std::cout << S<A>::Q<B>::q_.x;
}
答案 0 :(得分:3)
您应该按以下方式定义它:
template<typename T>
template<typename M>
S<T>::Q<M> S<T>::Q<M>::q_ = Q();