Index: clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDeleteCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDeleteCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDeleteCheck.cpp @@ -34,6 +34,7 @@ cxxMethodDecl( PrivateSpecialFn, unless(anyOf(hasBody(stmt()), isDefaulted(), isDeleted(), + ast_matchers::isTemplateInstantiation(), // Ensure that all methods except private special member // functions are defined. hasParent(cxxRecordDecl(hasMethod(unless( Index: clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-delete.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-delete.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-delete.cpp @@ -22,6 +22,32 @@ // CHECK-FIXES: ~PositivePrivate() = delete; }; +template +struct PositivePrivateTemplate { +private: + PositivePrivateTemplate(); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= delete' to prohibit calling of a special member function [modernize-use-equals-delete] + // CHECK-FIXES: PositivePrivateTemplate() = delete; + PositivePrivateTemplate(const PositivePrivateTemplate &); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= delete' to prohibit calling of a special member function [modernize-use-equals-delete] + // CHECK-FIXES: PositivePrivateTemplate(const PositivePrivateTemplate &) = delete; + PositivePrivateTemplate &operator=(const PositivePrivateTemplate &); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use '= delete' to prohibit calling of a special member function [modernize-use-equals-delete] + // CHECK-FIXES: PositivePrivateTemplate &operator=(const PositivePrivateTemplate &) = delete; + PositivePrivateTemplate(PositivePrivateTemplate &&); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= delete' to prohibit calling of a special member function [modernize-use-equals-delete] + // CHECK-FIXES: PositivePrivateTemplate(PositivePrivateTemplate &&) = delete; + PositivePrivateTemplate &operator=(PositivePrivateTemplate &&); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: use '= delete' to prohibit calling of a special member function [modernize-use-equals-delete] + // CHECK-FIXES: PositivePrivateTemplate &operator=(PositivePrivateTemplate &&) = delete; + ~PositivePrivateTemplate(); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= delete' to prohibit calling of a special member function [modernize-use-equals-delete] + // CHECK-FIXES: ~PositivePrivateTemplate() = delete; +}; + +template struct PositivePrivateTemplate; +template struct PositivePrivateTemplate; + struct NegativePublic { NegativePublic(const NegativePublic &); };