Friend class within templates

Stuart Brooks stuartb@cat.co.za
Mon Jul 19 08:20:00 GMT 2004


We are busy recompiling code under g++ 3.3.3 (Netbsd 2.0) and have come up
with a couple of problems. The previous compiler was g++ 2.95.3.

One in particular concerns the use of friend classes from within templates
viz the example below.

template<class T> OwnerClass
{
 public:
   ...

 protected:
  friend class T;
  void tellUsSomething() {} // called from T
};

The 3.3.3 compiler gives "error: using template type parameter 'T' after
'class'" which it didn't give under 2.95.3. I have had a look through
Stroustrup's "The C++ Programming Language" and couldn't find a direct
reference to this case, but presume it contravenes the C++ standard in some
way.

I was wondering if this is the case, and if so whether somebody has a clever
way to work around this easily. I have attached a short test program as an
illustration.

Regards
 Stuart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: testprog.tgz
Type: application/octet-stream
Size: 455 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-help/attachments/20040719/4d4c8695/attachment.obj>


More information about the Gcc-help mailing list