AMDG On 04/06/2011 10:46 AM, Peter Dimov wrote:
Eric Niebler wrote:
I'm saying that boost::function should actually be defined in boost::function_adl_block and be imported into the boost namespace with a using declaration.
This makes no sense to me. boost::bind is the unconstrained function template found by ADL, not boost::function. You ought to be arguing that boost::bind should be in an ADL-blocking namespace. Of course this will break all code that relies on ADL to omit the boost:: qualification.
The problem is that it's much easier to put a class in an ADL blocking namespace, than to put a class in al ADL blocking namespace: namespace bind_adl_block { template<class F> void bind(F f); } using bind_adl_block::bind; // bind can still be found by ADL The only way to do it is with a using directive: using namespace bin_adl_block; but this is fragile for other reasons. In Christ, Steven Watanabe