diff options
-rw-r--r-- | abstractmetabuilder.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index 9637c81a5..e07801afa 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -2082,7 +2082,6 @@ AbstractMetaType* AbstractMetaBuilder::translateType(const TypeInfo& _typei, boo metaType->setReference(typeInfo.is_reference); metaType->setConstant(typeInfo.is_constant); metaType->setOriginalTypeDescription(_typei.toString()); - decideUsagePattern(metaType); foreach (const TypeParser::Info &ta, typeInfo.template_instantiations) { TypeInfo info; @@ -2102,6 +2101,12 @@ AbstractMetaType* AbstractMetaBuilder::translateType(const TypeInfo& _typei, boo metaType->addInstantiation(targType, true); } + // The usage pattern *must* be decided *after* the possible template + // instantiations have been determined, or else the absence of + // such instantiations will break the caching scheme of + // AbstractMetaType::cppSignature(). + decideUsagePattern(metaType); + return metaType; } |