/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
void TrivialCtorDtorChecker::registerMatchers(MatchFinder *AstMatcher) { // We need to accept non-constexpr trivial constructors as well. This occurs // when a struct contains pod members, which will not be initialized. As // constexpr values are initialized, the constructor is non-constexpr.
AstMatcher->addMatcher(
cxxRecordDecl(hasTrivialCtorDtor(), hasDefinition(),
unless(allOf(hasTrivialDestructor(),
anyOf(hasTrivialDefaultConstructor(),
hasConstexprDefaultConstructor()))))
.bind("node"),
this);
}
void TrivialCtorDtorChecker::check(const MatchFinder::MatchResult &Result) { constchar *Error = "class %0 must have trivial constructors and destructors"; const CXXRecordDecl *Node = Result.Nodes.getNodeAs<CXXRecordDecl>("node");
diag(Node->getBeginLoc(), Error, DiagnosticIDs::Error) << Node;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.