$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: John Maddock (john_at_[hidden])
Date: 2005-01-21 05:48:36
> template<typename T> struct abc{};
>
> namespace foobar{
>
> struct A {};
>
> void operator<<( abc<A> const&, char) {}
>
> }
>
> void test()
> {
>   abc<foobar::A> t;
>
>   t << '0';
> }
>
> This code compiles by most compilers (including online Cameau), but 
> Borland
> fails it.
Thanks for the test case, I must admit until very recently I hadn't realised 
that this kind of ADL (based on introspection of template arguments) was 
supposed to work at all.  I would rather not turn off all ADL support for 
Borland, because most cases do actually work (for example ADL of swap 
overloads, and finding of operators that does not involve template argument 
introspection works), so I think we have two choices:
1) define a new config macro.
2) use BOOST_WORKAROUND if this problem hits you.
If the problem is limited to Borland C++ then I vote for (2) at present, but 
you can always change my mind ;-)
John.