http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46600

           Summary: Default move constructor copies array elements instead
                    of moving them.
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: yacw...@gmail.com


Created attachment 22482
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22482
Complete example code. Compile with 4.6 or higher using -std=c++0x.

N3126: § 12.8.17 [move constructors]:
--(3): "an array is initialized by moving each element in the manner
appropriate to the element type"

If you have a class with a member array and you call the default move
constructor for said class, the move constructor COPIES said array elements.
From what the standard says, it seems it should MOVE these elements.



VERSION: 4.6.0 20100529 (experimental) (GCC)
4.5.1 is unable to explicitly default the move constructor.
I don't have any other functional versions between these two.
NOTE: I have added Pedro Lamarão's patch
http://gcc.gnu.org/ml/gcc-patches/2007-04/msg00620.html to my 4.6.0 but I can't
see this affecting anything.

TARGET: x86_64-unknown-linux-gnu
SYSTEM: Core2Duo / Ubuntu(64) 10.4.

ATTACHMENT:
Compiles OK with -std=c++0x.
OUTPUT:
copy
copy
move
PROBLEM:
According to the C++ spec (ver N3126), I think the first 2 "copy"s should be
"move"s.

Reply via email to