
Vladislav Lazarenko <snail@b2bits.com> writes:
Martin Bonner wrote:
The problem is the code: template <typename T1, typename T2> class sealed_impl { friend typename T1; friend typename T2; ...
7.1.5.3 p2 says "[Note: this implies that, within a class template with a template type-parameter T, the declaration friend class T; is ill-formed.]"
In other words, you can't do that :-(
You are absolutely right. The only thing I am confused with is error description. The Boost is used not only by advanced developers, but by mid-level too. So when they will see such description it will be very difficult to find the real reason of error. Maybe I need just to put more comments in the header they will probably check.
I proposed a similar thing on comp.std.c++ in 2001: http://groups.google.com/group/comp.std.c++/browse_thread/thread/accd1f3f57dfed60/c19fc42712e15296?lnk=st&q=comp.std.c%2B%2B+final+Anthony+Williams&rnum=1#c19fc42712e15296 Unfortunately the declaration "friend typename T", is not legal. It might happen to work on current releases of Microsoft compilers, but that's a bug in the compiler. Anthony -- Anthony Williams Software Developer Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk