// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-defaulted-function-deleted
;
;
;
;
;
;
;
;
;
;
;
;
;
// A defaulted copy/move assignment operator for class X is defined as deleted
// if X has:
// -- a variant member with a non-trivial corresponding assignment operator
// and X is a union-like class
;
; // expected-note {{here}}
;
; // expected-note {{here}}
// -- a non-static const data member of (array of) non-class type
;
;
;
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
;
;
// -- a non-static data member of reference type
;
; // expected-note {{here}}
; // expected-note {{here}}
// -- a non-static data member of class type M that cannot be copied/moved
;
;
;
;
;
;
;
;
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
// -- a direct or virtual base that cannot be copied/moved
; // expected-note {{base class 'AmbiguousCopyAssign' has multiple copy}}
;
; // expected-note {{base class 'DeletedCopyAssign' has a deleted copy}}
;
; // expected-note {{base class 'InaccessibleCopyAssign' has an inaccessible copy}}
;
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
; // expected-note {{here}}
;
; // expected-note {{here}}