Quelle NonMemMovableTemplateArgChecker.cpp
Sprache: C
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// Get the specialization const ClassTemplateSpecializationDecl *Specialization =
Result.Nodes.getNodeAs<ClassTemplateSpecializationDecl>("specialization");
SourceLocation RequestLoc = Specialization->getPointOfInstantiation();
// Report an error for every template argument which is non-memmovable const TemplateArgumentList &Args =
Specialization->getTemplateInstantiationArgs(); for (unsigned i = 0; i < Args.size(); ++i) {
QualType ArgType = Args[i].getAsType(); if (NonMemMovable.hasEffectiveAnnotation(ArgType)) {
diag(Specialization->getLocation(), Error, DiagnosticIDs::Error)
<< Specialization << ArgType; // XXX It would be really nice if we could get the instantiation stack // information // from Sema such that we could print a full template instantiation stack, // however, // it seems as though that information is thrown out by the time we get // here so we // can only report one level of template specialization (which in many // cases won't // be useful)
diag(RequestLoc, Note, DiagnosticIDs::Note) << Specialization;
NonMemMovable.dumpAnnotationReason(*this, ArgType, RequestLoc);
}
}
}
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
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 ist noch experimentell.