diff --git a/src/Generator/Passes/GenerateTemplatesCodePass.cs b/src/Generator/Passes/GenerateTemplatesCodePass.cs index 4be888a7..ee73294a 100644 --- a/src/Generator/Passes/GenerateTemplatesCodePass.cs +++ b/src/Generator/Passes/GenerateTemplatesCodePass.cs @@ -15,17 +15,18 @@ namespace CppSharp.Passes return true; } - public override bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization) + public override bool VisitClassDecl(Class @class) { - if (!specialization.IsDependent && - (!specialization.TranslationUnit.IsSystemHeader || - !specialization.Ignore)) + if (!base.VisitClassDecl(@class) || !@class.IsDependent) + return false; + + var cppTypePrinter = new CppTypePrinter + { + PrintScopeKind = CppTypePrintScopeKind.Qualified, + PrintLogicalNames = true + }; + foreach (var specialization in @class.Specializations.Where(s => !s.IsDependent && !s.Ignore)) { - var cppTypePrinter = new CppTypePrinter - { - PrintScopeKind = CppTypePrintScopeKind.Qualified, - PrintLogicalNames = true - }; var cppCode = specialization.Visit(cppTypePrinter); var module = specialization.TranslationUnit.Module; if (templateInstantiations.ContainsKey(module))