Здравствуйте, rus-k, Вы писали:
RK>RK>template<typename T>
RK>struct Base
RK>{
RK> T::X m_x; // Ошибка!!!
RK> void foo()
RK> {
RK> T::X m_x; // Допустимо!!!
RK> }
RK>};
RK>
RK>Только не понятно, в чем разница. Так локальная переменная, так член класса...
Я могу повторить ещё раз, мне не сложно.
В первом случае у тебя циклическая зависимость между определениями классов.
Во втором случае циклической зависимости нет (тело функции-члена не является часть определения класса — оно вообще может быть вынесено в отдельную единицу трансляции).