diff options
| -rw-r--r-- | clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp | 3 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp b/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp index 5d09872295a..081c439f3c7 100644 --- a/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp @@ -57,6 +57,9 @@ void MoveConstructorInitCheck::check(const MatchFinder::MatchResult &Result) { if (QT.isTriviallyCopyableType(*Result.Context)) return; + if (QT.isConstQualified()) + return; + const auto *RD = QT->getAsCXXRecordDecl(); if (RD && RD->isTriviallyCopyable()) return; diff --git a/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp b/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp index 0ea7fb4b86f..104c17abe70 100644 --- a/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp +++ b/clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp @@ -84,6 +84,16 @@ struct N { N(N &&RHS) : Mem(move(RHS.Mem)) {} }; +struct O { + O(O&& other) : b(other.b) {} // ok + const B b; +}; + +struct P { + P(O&& other) : b(other.b) {} // ok + B b; +}; + struct Movable { Movable(Movable &&) = default; Movable(const Movable &) = default; |

