http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14258
--- Comment #21 from Elias Pipping <pipping at exherbo dot org> --- (In reply to Jonathan Wakely from comment #19) > That example's a bit misleading, because 'int' really isn't a class, > namespace or enumeration, but the error's wrong because there could be a > specialization of A<>, and the same error is produced even if A<T>::type is > a class type. You're right. This will reproduce the problem, too: <<SNIP struct C; template <typename T> struct A { typedef C type; }; template <typename T> struct B : public A<T> { using typename A<T>::type; static const int block_size = type::block_size; }; <<SNAP