
On Monday 15 June 2009 01:07:28 Peter Dimov wrote:
Andrey Semashev:
Will it break users' code that don't import boost::bind into the global namespace but use placeholders without qualification?
Yes it will. But we can't leave them as they're now because people complain of conflicts.
From other posts I got an impression that you are not planning to make these placeholders interchangeable between different libraries, such as bind and lambda. If so, then: * How does moving bind placeholders to boost::placeholders help? People have to qualify them now, they will still have to qualify them after the change. * Why boost::placeholders, if these placeholders will be specific to Boost.Bind? IMHO, if we're moving to unified placeholders (which is presumable the ultimate goal), this should be a major change to all involved libraries, namely, bind, lambda and phoenix at least. A backwards compatibility layer is a must for such a change, because the named libraries are the ones most frequently used. Moreover, I'd prefer if the old code compiled without a change by default (i.e. no BOOST_USE_GLOBAL_PLACEHOLDERS macro needed). I see another way of doing this. Perhaps, we could create a new functional library powered by proto that would accumulate features from bind, lambda and phoenix and release it independently. It could be designed the way we want and be targeted for recent compilers (IOW, drop hacks for ancient compilers). The old libraries would become deprecated, they won't change their interface a bit and will be left for compatibility. Maybe eventually these libraries will degenerate into a thin interface layers to the new library.