Subject: Re: [boost] Ping to the admins (was Re: Boost.Operators issue: polluting namespace of caller through argument-dependent lookup)
From: Daniel Frey (d.frey_at_[hidden])
Date: 2016-02-17 13:20:18


> On 17.02.2016, at 19:05, Andrey Semashev <andrey.semashev_at_[hidden]> wrote:
>
> On 2016-02-17 20:57, Daniel Frey wrote:
>>
>> On the topic of fixing the issue reported: I realize that
>> is_chained_base is actually a PITA when you try to add another
>> namespace around the operator templates. I’ll have to think of a
>> solution. Just a heads up for others: is_chained_base was placed in
>> ::boost, not ::boost::detail. I assume this is an oversight as the
>> documentation does not mention it and a comment in the source is
>> implying that it should actually should have been placed in
>> ::boost::detail. If anyone ever used it as part of the public
>> interface, please speak up now! :)
>
> Not sure about the purpose of is_chained_base, but might I suggest avoid moving it into boost::detail. Bringing in 'boost::detail' into ADL is almost as bad as bringing in 'boost'. This also concerns other types that are used in template parameters of operator base classes.

I wasn’t planning on moving it to boost::detail, I will probably rename boost::detail to boost::operators_impl (within operators.hpp) anyways for the reasons you mentioned. I was only wondering if a can assume is_chained_base to be an implementation detail or if anyone thought that it’s part of the public interface.