// RUN: %clang_cc1 -verify %s -std=c++11 // A function that is explicitly defaulted shall struct A { // -- be a special member function, A(int) = default; // expected-error {{only special member functions may be defaulted}} // -- have the same declared function type as if it had been implicitly // declared void operator=(const A &) = default; // expected-error {{must return 'A &'}} A(...) = default; // expected-error {{cannot be variadic}} A(const A &, ...) = default; // expected-error {{cannot be variadic}} // (except for possibly differing ref-qualifiers A &operator=(A &&) & = default; // and except that in the case of a copy constructor or copy assignment // operator, the parameter type may be "reference to non-const T") A(A &) = default; A &operator=(A &) = default; // -- not have default arguments A(double = 0.0) = default; // expected-error {{cannot have default arguments}} A(const A & = 0) = default; // expected-error {{cannot have default arguments}} };