
on Mon Jan 21 2013, Andrey Semashev <andrey.semashev-AT-gmail.com> wrote:
On Monday 21 January 2013 19:06:32 Paul Smith wrote:
On Mon, Jan 21, 2013 at 6:12 PM, Joel de Guzman <djowel@gmail.com> wrote:
This notion of a "valid" state is not clear to begin with anyway and many say it depends on the library to define what "valid" means. The case of NaN is a very clear example of a perfectly "valid" state similar to what we have here.
I'm not sure what the NaN example supposed to convey? I think Nevin brought it up to show that std::less<double> is not a weak partial order. And guess what, it technically isn't! Try to put NaNs inside an associative container and watch the world collapse. The big difference is that no operation on non-NaNs that the container performs ever produces a NaN out of thin air.
Why would a container try to order moved-from elements?
Moved-from elements can be left there due to exceptions propagating out of the code. That's a *new* state that wasn't allowed before move-enabling, so if these moved-from elements have a state outside the former invariants, it will break some code. -- Dave Abrahams BoostPro Computing Software Development Training http://www.boostpro.com Clang/LLVM/EDG Compilers C++ Boost