Поскольку Type::x
- это не тип , а значение , поэтому, когда вы пишете typename
, вы говорите компилятору найти вложенный тип с именем x
внутри Type
, но не смог. Следовательно, GCC говорит no type named 'x' in 'struct Type'
, что более полезно, чем сообщение, генерируемое VC ++.