44 const auto *EnableIf =
45 Result.Nodes.getNodeAs<TemplateTypeParmDecl>(
"enable_if");
46 const auto *EnableIfSpecializationLoc =
47 Result.Nodes.getNodeAs<TemplateSpecializationTypeLoc>(
48 "enable_if_specialization");
51 assert(EnableIfSpecializationLoc);
53 const SourceManager &SM = *Result.SourceManager;
54 const SourceLocation RAngleLoc =
55 SM.getExpansionLoc(EnableIfSpecializationLoc->getRAngleLoc());
57 auto Diag = diag(EnableIf->getBeginLoc(),
58 "incorrect std::enable_if usage detected; use "
59 "'typename std::enable_if<...>::type'");
60 if (!getLangOpts().CPlusPlus20 &&
61 EnableIfSpecializationLoc->getElaboratedKeywordLoc().isInvalid()) {
62 Diag << FixItHint::CreateInsertion(EnableIfSpecializationLoc->getBeginLoc(),
65 Diag << FixItHint::CreateInsertion(RAngleLoc.getLocWithOffset(1),
"::type");