Consider:

  template <typename...> struct p;

  template <typename, typename> struct d;

  template <typename... A, typename... B>
  struct d<p<A...>, p<B...> > { typedef int t; };

  typedef d<p<>, p<int, float> >::t q;
  typedef d<q, d<p<int>, p<float> >::t> r; // *

  typedef d<d<p<>, p<int, float> >::t, d<p<>, p<> >::t> s;
    // error: ‘typedef int d<p<int>, p<float> >::t’ is inaccessible within
this context

The error makes no sense. In fact, it disappears if the unrelated line marked
with an asterisk is removed.


-- 
           Summary: Bogus inaccessibility error on variadic partial template
                    specialization.
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: gcc-bugzilla at contacts dot eelis dot net


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35784

Reply via email to