Eric Niebler wrote:
While investigating a failure[^1] in proto, I discovered the following change to boost::ref:
https://github.com/boostorg/core/commit/af629ffa59094048c335609f285afe342fd1...
This failure was caused by the following change to boost::ref by Agustín Bergé (K-ballo):
https://github.com/boostorg/core/commit/af629ffa59094048c335609f285afe342fd1...
I didn't see any discussion about this change. (Was there one?) I can guess why it was made: to make boost::ref behave like std::ref, which does "reference collapsing" with reference_wrapper (which IMO is broken, and I unsuccessfully argued that in the committee when this was voted in). The problem is, it's a breaking interface change to one of the oldest, most heavily used, and stable pieces of Boost. It pretty massively breaks a major part of Boost.Proto's interface (proto::make_expr). I've hacked around the problem in Proto's tests, but this is going to break end-user code, and I don't know what I'm going to tell people.
I don't like differences between boost and std. But I also don't like breaking code. What do we want here?
We want to revert the change, unless someone (quickly) succeeds in convincing us not to.
[^1]: http://www.boost.org/development/tests/develop/developer/output/teeks99-03j-...