1313using namespace clang ::ast_matchers;
1414
1515namespace clang ::tidy::cppcoreguidelines {
16- namespace {
17-
18- AST_MATCHER (FieldDecl, isMemberOfLambda) {
19- return Node.getParent ()->isLambda ();
20- }
2116
22- bool hasCopyConstructor (CXXRecordDecl const &Node) {
17+ static bool hasCopyConstructor (CXXRecordDecl const &Node) {
2318 if (Node.needsOverloadResolutionForCopyConstructor () &&
2419 Node.needsImplicitCopyConstructor ()) {
2520 // unresolved
@@ -38,7 +33,7 @@ bool hasCopyConstructor(CXXRecordDecl const &Node) {
3833 return false ;
3934}
4035
41- bool hasMoveConstructor (CXXRecordDecl const &Node) {
36+ static bool hasMoveConstructor (CXXRecordDecl const &Node) {
4237 if (Node.needsOverloadResolutionForMoveConstructor () &&
4338 Node.needsImplicitMoveConstructor ()) {
4439 // unresolved
@@ -57,7 +52,7 @@ bool hasMoveConstructor(CXXRecordDecl const &Node) {
5752 return false ;
5853}
5954
60- bool hasCopyAssignment (CXXRecordDecl const &Node) {
55+ static bool hasCopyAssignment (CXXRecordDecl const &Node) {
6156 if (Node.needsOverloadResolutionForCopyAssignment () &&
6257 Node.needsImplicitCopyAssignment ()) {
6358 // unresolved
@@ -76,7 +71,7 @@ bool hasCopyAssignment(CXXRecordDecl const &Node) {
7671 return false ;
7772}
7873
79- bool hasMoveAssignment (CXXRecordDecl const &Node) {
74+ static bool hasMoveAssignment (CXXRecordDecl const &Node) {
8075 if (Node.needsOverloadResolutionForMoveAssignment () &&
8176 Node.needsImplicitMoveAssignment ()) {
8277 // unresolved
@@ -95,6 +90,12 @@ bool hasMoveAssignment(CXXRecordDecl const &Node) {
9590 return false ;
9691}
9792
93+ namespace {
94+
95+ AST_MATCHER (FieldDecl, isMemberOfLambda) {
96+ return Node.getParent ()->isLambda ();
97+ }
98+
9899AST_MATCHER (CXXRecordDecl, isCopyableOrMovable) {
99100 return hasCopyConstructor (Node) || hasMoveConstructor (Node) ||
100101 hasCopyAssignment (Node) || hasMoveAssignment (Node);
0 commit comments