Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2006-04-08 10:51:46


Vladislav Lazarenko <snail_at_[hidden]> writes:

> # define BOOST_DECLARE_TEMPLATE_FRIEND(T) \
> namespace boost { namespace template_friend { \
> struct friend_maker { \
> typedef T T2; \
> }; \
> typedef typename friend_maker::T2 friend_type; \
> friend friend_type;

<snip>

Okay, this macro opens new namespaces whereever I use it.

> namespace boost
> {
> // protection from unintended ADL
> namespace sealed_
> {
> template <typename T1, typename T2>
> class sealed_impl
> {
> BOOST_DECLARE_TEMPLATE_FRIEND(T1);
> BOOST_DECLARE_TEMPLATE_FRIEND(T2);

And here we are opening namespace within a class template body. Last
time I checked that was illegal.

What am I missing?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk