public virtual bool VisitTemplateSpecializationType(TemplateSpecializationType template, TypeQualifiers quals) { if (!VisitType(template, quals)) { return(false); } if (VisitOptions.VisitTemplateArguments) { foreach (var arg in template.Arguments) { switch (arg.Kind) { case TemplateArgument.ArgumentKind.Type: var type = arg.Type.Type; if (type != null) { type.Visit(this, arg.Type.Qualifiers); } break; case TemplateArgument.ArgumentKind.Declaration: arg.Declaration.Visit(this); break; } } } if (template.IsDependent && template.Template != null) { return(template.Template.Visit(this)); } var specialization = template.GetClassTemplateSpecialization(); return(specialization != null && specialization.Visit(this)); }
public InjectedClassNameType(InjectedClassNameType type) : base(type) { TemplateSpecialization = (TemplateSpecializationType)type.TemplateSpecialization.Clone(); Class = type.Class; }
public ClassTemplatePartialSpecialization FindPartialSpecialization( TemplateSpecializationType type) { return(FindSpecialization(type) as ClassTemplatePartialSpecialization); }
public ClassTemplateSpecialization FindSpecialization( TemplateSpecializationType type) { return(Specializations.FirstOrDefault( spec => spec.Arguments.SequenceEqual(type.Arguments))); }