This is the mail archive of the mailing list for the libstdc++ project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Failing test when run as C++11

On 09/05/14 13:15 +0200, Daniel Krügler wrote:
2014-05-09 12:53 GMT+02:00 Jonathan Wakely <>:
20_util/specialized_algorithms/uninitialized_copy/ fails if
run in C++11 mode because is_nothrow_move_constructible<c> is false,
which means vector::resize() copies the elements using non-const
lvalue arguments, which selects the template constructor.

(In C++03 it copies from *const* lvalue arguments, selecting the copy

We can either fix it by adding throw() to the copy constructor, or by
adding a move cosntructor (with a comment explaining why):

#if __cplusplus >= 201103L
  c(c&&) = default;

I can't decide which I prefer, does anyone else have a preference?

Do you know whether the test case was added to validate a bug fix and
if so, which one? I would like to ensure that the change still
reflects the original intention for adding it.


That was filed against Red Hat's GCC 4.4 and at the time the upstream
GCC already passed the test. Benjamin added the test to catch any
regressions. Arguably, the C++11 behaviour (copying from non-const
lvalue instead of const lvalue) can be considered a regression, but I
think it's the correct behaviour.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]