special member function, make sure to classify an explicitly-defaulted
copy constructor as a "copy" operation. Fixes PR10622.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137219
91177308-0d34-0410-b5e6-
96231b3b80d8
BaseAndFieldInfo(Sema &S, CXXConstructorDecl *Ctor, bool ErrorsInInits)
: S(S), Ctor(Ctor), AnyErrorsInInits(ErrorsInInits) {
// FIXME: Handle implicit move constructors.
- if (Ctor->isImplicit() && Ctor->isCopyConstructor())
+ if ((Ctor->isImplicit() || Ctor->isDefaulted()) &&
+ Ctor->isCopyConstructor())
IIK = IIK_Copy;
else
IIK = IIK_Default;
--- /dev/null
+// RUN: %clang_cc1 -fsyntax-only -std=c++0x -verify %s
+
+namespace PR10622 {
+ struct foo {
+ const int first;
+ foo(const foo&) = default;
+ };
+ void find_or_insert(const foo& __obj) {
+ foo x(__obj);
+ }
+}