This code:

template<typename T, typename U>
class   freeList {
public:
    void foo() {};
    };

class   bar {};

class   baz : protected freeList<bar, baz> {
template<typename T>
friend
void    freeList<T, baz>::foo();
    };
int main() {
    baz b;
    return 0;
    }

gets you:

s3:~/ootbc/personal/ivan$ g++ foo.cc
foo.cc:12: error: member ‘void freeList<T, baz>::foo()’ declared as friend
before type ‘freeList<T, baz>’ defined

FWIW, Comeau accepts it.


-- 
           Summary: rejects valid friend
           Product: gcc
           Version: 4.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: igodard at pacbell dot net


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

Reply via email to