[LLVMbugs] [Bug 10285] New: Improper assignment operator overload resolution

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Jul 6 08:59:31 PDT 2011


           Summary: Improper assignment operator overload resolution
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++0x
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: hhinnant at apple.com
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com

Apple clang version 3.0 (trunk 134483) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin11.0.0
Thread model: posix

$  clang++ -std=c++0x test.cpp

class A
    A() {}

    template <class _F>
        explicit A(_F&& __f);

    A(A&&) {}
    A& operator=(A&&) {return *this;}

template <class T>
void sort(T t)
    A a;
    a = A(t);

int main()

test.cpp:18:7: error: overload resolution selected deleted operator '='
    a = A(t);
    ~ ^ ~~~~
test.cpp:2:7: note: candidate function (the implicit copy assignment operator)
has been explicitly deleted
class A
test.cpp:11:8: note: candidate function not viable: no known conversion from
'A' to 'A &&' for 1st argument
    A& operator=(A&&) {return *this;}
1 error generated.

I expect it to compile, selecting the move assignment operator.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list