namespace List { template<class TElement> class List { typedef ListImpl :: Node<TElement> Node; }; } namespace ListImpl { template<class TElement> class Node { /* blah-blah-blah */ }; } Error: ListImpl не был декларирован. Вопрос: как сделать так, чтобы в List :: были видны объявления из ListImpl :: ? То есть, я объявляю второе пространство имём, а первое его не видит, так как второе определено позже. Я новичок, пробовал создать прототип в начале файла: "namespace ListImpl", но GCC сказало так не можно.