Два шаблонных класса состоят из членов друг друга

Мне нужно, чтобы в моем коде два шаблонных класса состояли из полей членов друг друга. Например, у меня есть два файла,

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;
}

Когда я компилирую, я получаю вывод, показанный в этой ссылке

http://pastebin.com/taBWZjar

Я использую компилятор g ++. Когда я набираю g ++ --version, я получаю

g ++ (Gentoo 4.7.2 p1.3, pie-0.5.5) 4.7.2

Если это невозможно сделать в C ++, что является альтернативой или обходным путем? Или это ошибка моего компилятора?

Ответы на вопрос(1)

Ваш ответ на вопрос