|
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