https://llvm.org/bugs/show_bug.cgi?id=31025
Bug ID: 31025 Summary: deleted move constructor ignored by return statement Product: clang Version: trunk Hardware: All OS: All Status: NEW Severity: normal Priority: P Component: C++11 Assignee: unassignedclangb...@nondot.org Reporter: cubbi...@gmail.com CC: dgre...@apple.com, llvm-bugs@lists.llvm.org Classification: Unclassified When returning a class lvalue with deleted move constructor, first phase of the return statement's overload resolution selects that deleted move constructor and results in an error in GCC, Intel, and MSVC. Clang, however, silently falls through to the second phase overload resolution (and selects the copy ctor if available): struct B { B() {}; B(const B &) {}; B(B &&) = delete; }; B bar() { B b; return b; // OK in Clang, Error in GCC, Intel, MSVC } The relevant standardese is [class.copy]/32 "If the first overload resolution fails ... " and it appears clang disagrees with others w.r.t. what it means for overload resolution to "fail" in this context. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs