------- Comment #10 from pinskia at gcc dot gnu dot org 2005-11-05 02:18 ------- (In reply to comment #9) Never mind that, the numbers have changed a little.
Take the following example: template <typename T> struct List { struct D { int size; }; D *d; List &fill(const T &t, int size = -1); }; template<> struct List<int>::D { int d; }; template <typename T> List<T> &List<T>::fill(const T &t, int size) { resize(d->size); return *this; } int main(void) { List<int> a; a.fill(1, 1); } This is really invalid code as List<int>::D::size does not exist but it can only be diagnost at instaination time. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24680