189a1d03eSRichard // RUN: %check_clang_tidy -std=c++98 %s cppcoreguidelines-special-member-functions %t 289a1d03eSRichard 389a1d03eSRichard class DefinesDestructor { 489a1d03eSRichard ~DefinesDestructor(); 589a1d03eSRichard }; 6*aa56e66bSRoy Jacobson // CHECK-MESSAGES: [[@LINE-3]]:7: warning: class 'DefinesDestructor' defines a destructor but does not define a copy constructor or a copy assignment operator [cppcoreguidelines-special-member-functions] 789a1d03eSRichard 889a1d03eSRichard class DefinesCopyConstructor { 989a1d03eSRichard DefinesCopyConstructor(const DefinesCopyConstructor &); 1089a1d03eSRichard }; 1189a1d03eSRichard // CHECK-MESSAGES: [[@LINE-3]]:7: warning: class 'DefinesCopyConstructor' defines a copy constructor but does not define a destructor or a copy assignment operator [cppcoreguidelines-special-member-functions] 1289a1d03eSRichard 1389a1d03eSRichard class DefinesCopyAssignment { 1489a1d03eSRichard DefinesCopyAssignment &operator=(const DefinesCopyAssignment &); 1589a1d03eSRichard }; 1689a1d03eSRichard // CHECK-MESSAGES: [[@LINE-3]]:7: warning: class 'DefinesCopyAssignment' defines a copy assignment operator but does not define a destructor or a copy constructor [cppcoreguidelines-special-member-functions] 1789a1d03eSRichard 1889a1d03eSRichard class DefinesNothing { 1989a1d03eSRichard }; 2089a1d03eSRichard 2189a1d03eSRichard class DefinesEverything { 2289a1d03eSRichard DefinesEverything(const DefinesEverything &); 2389a1d03eSRichard DefinesEverything &operator=(const DefinesEverything &); 2489a1d03eSRichard ~DefinesEverything(); 2589a1d03eSRichard }; 2689a1d03eSRichard 27