Created attachment 29537 [details] Minimal reproducible testcase $ g++-snapshot --version g++-snapshot (Debian 20130222-1) 4.8.0 20130223 (experimental) [trunk revision 196236] $ cat main.cpp struct foo { explicit foo(int) {} }; template<typename T> struct bar: T { using T::T; // Bad explicit bar(): T(0) {} void baz() { // Also bad using qux = T; } }; int main() {} $ g++-snapshot -std=c++11 -pthread main.cpp main.cpp: In constructor 'bar<T>::bar()': main.cpp:10:21: error: 'using T::T' is not a non-static data member of 'bar<T>' explicit bar(): T(0) {} ^ main.cpp: In member function 'void bar<T>::baz()': main.cpp:15:21: error: expected type-specifier before 'T' using qux = T; ^ --- If the using declaration is commented out, then things proceed as usual. It is also possible to alias the template parameter before the using declaration (e.g. using base_type = T;) to substitute for uses of T after the declaration. Because this doesn't happen if bar is not a template, I don't think it is intended.
Same issue as 56358. *** This bug has been marked as a duplicate of bug 56358 ***