尝试使用 GCC 4.6.0 编译此(类似 CRTP)代码时:
template<template<class> class T> struct A;
template<class T>
struct B: A<B<T>::template X> {
template <class U> struct X { U mem; };
};
B<int> a;
我收到错误消息“test.cpp:3:26: error: no class template named 'X' in 'struct B<int>'”。为什么 X 在类定义之外似乎是不可见的?