The code below compiles, but it should give an error, because the Policy ctor
is not accessible when inheriting protected from Policy 
To have valid C++ code the inheritance must be public.


struct Policy
{
protected:
        Policy() {}
        Policy(const Policy&) {}
};

template<int I, class P>
struct BugGcc :
        protected P
        //public P
{
        BugGcc() {}

        template<int I, class P>
        BugGcc(const BugGcc<I, P>& t) : P(t) {}
};

void foo()
{
        BugGcc<0, Policy> f1;
        BugGcc<1, Policy> f2(f1);
}


GCC:
gcc-Version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC)


-- 
           Summary: Template: Wrong inherited copy-ctor visibility
           Product: gcc
           Version: 4.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: syntheticpp at gmx dot net


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

Reply via email to