http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53549
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-12 10:39:20 UTC --- Further reduced, a single example showing both errors: template<typename T> struct C { int operator()(); template<int I> struct F : C { using C<T>::operator(); }; }; template<typename T> struct C2 { int operator()(); template<int> struct F2; }; template<typename T> template<int I> struct C2<T>::F2 : C2<T> { using C2<T>::operator(); }; C<int>::F<2> f1; using.cc:26:31: error: no members matching 'C2<T>::operator()' in 'struct C2<T>' using C2<T>::operator(); ^ using.cc: In instantiation of 'struct C<int>::F<2>': using.cc:29:14: required from here using.cc:4:9: error: 'int C<T>::operator()()' is inaccessible int operator()(); ^ using.cc:7:16: error: within this context struct F : C ^