Hi, noticed while working on std::vector. Tested x86_64-linux, committed.
Paolo. ///////////////////
2011-06-06 Paolo Carlini <paolo.carl...@oracle.com> * include/bits/move.h (move_if_noexcept): Use __and_ and __not_.
Index: include/bits/move.h =================================================================== --- include/bits/move.h (revision 174699) +++ include/bits/move.h (working copy) @@ -90,8 +90,8 @@ */ template<typename _Tp> inline typename - conditional<(!is_nothrow_move_constructible<_Tp>::value - && is_copy_constructible<_Tp>::value), + conditional<__and_<__not_<is_nothrow_move_constructible<_Tp>>, + is_copy_constructible<_Tp>>::value, const _Tp&, _Tp&&>::type move_if_noexcept(_Tp& __x) noexcept { return std::move(__x); }