|
Boost : |
Subject: Re: [boost] Boost.Operators issue: polluting namespace of caller through argument-dependent lookup
From: John M. Dlugosz (mpbecey7gu_at_[hidden])
Date: 2016-01-19 18:43:19
On 1/18/2016 1:11 PM, Andrey Semashev wrote:
> On 2016-01-18 21:03, Daniel Frey wrote:
>>> On 17.01.2016, at 10:51, John M. Dlugosz <mpbecey7gu_at_[hidden]>
>>> wrote:
>>>
>>> The use of make_shared is finding boost::make_shared as well as
>>> std::make_shared. The program doesn't use boost::shared_ptr and
>>> shouldn't need to know about it.
>>
>> This can not be simply Âfixed as it is quite an old and established
>> interface. What about the people that actually rely on ADL to kick in
>> to find their unqualified call of make_shared?
>
> Given that there is BOOST_NO_OPERATORS_IN_NAMESPACE, I don't think that the addition of
> the boost namespace to ADL was ever intended. I would rather see this fixed and the code
> that relies on this side effect broken (with the appropriate note in the release notes
> and the advice to use namespace qualification to resolve the problem).
>
It already varies with the version of Boost! And with the selected headers being pulled
in by other code. So it already is a wild card that might work in some places and not others.
make_shared (or any other pre-standard library) is not related to the Operators feature,
and people shouldn't count on it interacting in an undocumented way. And it doesn't
really: it depends on what else is included.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk