On 17.02.2016, at 19:05, Andrey Semashev
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.