Два шаблонных класса состоят из членов друг друга
Мне нужно, чтобы в моем коде два шаблонных класса состояли из полей членов друг друга. Например, у меня есть два файла,
templates.h
template <class T> class B;
template <class T>
class A
{
B<A> a;
// fields and methods dependent on T
};
template <class T>
class B
{
A<B> b;
// fields and methods dependent on T
};
main.cpp
#include "templates.h"
int main()
{
A<int> a;
}
Когда я компилирую, я получаю вывод, показанный в этой ссылке
Я использую компилятор g ++. Когда я набираю g ++ --version, я получаю
g ++ (Gentoo 4.7.2 p1.3, pie-0.5.5) 4.7.2
Если это невозможно сделать в C ++, что является альтернативой или обходным путем? Или это ошибка моего компилятора?