この質問にどのタイトルを付けるかさえわかりません。うまくいけば、コードは私がやろうとしていることを示しています:
#include <string>
#include <list>
using namespace std;
template<typename A> class Alpha { public: A m_alpha_a; };
template<typename B> class Bravo { public: B m_bravo_b; };
template<> class Alpha<string> { public: string m_alpha_string; };
template<typename B>
template<> class Alpha<Bravo<B> >
{
public:
Bravo<B> m_bravo_class; // Line A
};
int main()
{
Alpha<int> alpha_int;
alpha_int.m_alpha_a= 4;
Alpha<string> alpha_string;
alpha_string.m_alpha_string = "hi";
Alpha<Bravo<int> > alpha_bravo_int;
alpha_bravo_int.m_bravo_class.m_bravo_b = 9;
};
Alpha<A>
Aが任意のタイプの場合の特殊化を記述したいのですBravo<B>
が、コンパイラーは
クラステンプレートを囲む'>'トークンの前の無効な明示的な特殊化は明示的に特殊化されていません
(を参照して// Line A
ください。)私がやりたいことをするための正しい構文は何ですか?