template <typename T>
class final
{
   struct workaround { typedef T type; };
   friend class workaround::type;
   final() { };
   final( final const& ) { };
};
struct Foo : virtual public final<Foo> {};
void test() { Foo foo; }


$7.1.5.3/2 prohibits such code and Comeau compiler reports an error:

error: typedef "type" may not be used in an 
elaborated type specifier
     friend class workaround::type;
                              ^


-- 
           Summary: friend accepts template type-parameter.
           Product: gcc
           Version: 4.1.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pluto at agmk dot net


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

Reply via email to