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
                ^

Reply via email to