Index: clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp +++ clang-tools-extra/clang-tidy/misc/MoveConstructorInitCheck.cpp @@ -57,6 +57,9 @@ if (QT.isTriviallyCopyableType(*Result.Context)) return; + if (QT.isConstQualified()) + return; + const auto *RD = QT->getAsCXXRecordDecl(); if (RD && RD->isTriviallyCopyable()) return; Index: clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp +++ clang-tools-extra/test/clang-tidy/misc-move-constructor-init.cpp @@ -84,6 +84,11 @@ N(N &&RHS) : Mem(move(RHS.Mem)) {} }; +struct O { + O(O&& other) : b(other.b) {} // ok + const B b; +} + struct Movable { Movable(Movable &&) = default; Movable(const Movable &) = default;