当前位置: 首页>>代码示例>>C++>>正文


C++ ASTContext::getTemplateSpecializationType方法代码示例

本文整理汇总了C++中ASTContext::getTemplateSpecializationType方法的典型用法代码示例。如果您正苦于以下问题:C++ ASTContext::getTemplateSpecializationType方法的具体用法?C++ ASTContext::getTemplateSpecializationType怎么用?C++ ASTContext::getTemplateSpecializationType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ASTContext的用法示例。


在下文中一共展示了ASTContext::getTemplateSpecializationType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getInjectedClassNameType

QualType ClassTemplateDecl::getInjectedClassNameType(ASTContext &Context) {
    if (!CommonPtr->InjectedClassNameType.isNull())
        return CommonPtr->InjectedClassNameType;

    // FIXME: n2800 14.6.1p1 should say how the template arguments
    // corresponding to template parameter packs should be pack
    // expansions. We already say that in 14.6.2.1p2, so it would be
    // better to fix that redundancy.

    TemplateParameterList *Params = getTemplateParameters();
    llvm::SmallVector<TemplateArgument, 16> TemplateArgs;
    TemplateArgs.reserve(Params->size());
    for (TemplateParameterList::iterator Param = Params->begin(),
            ParamEnd = Params->end();
            Param != ParamEnd; ++Param) {
        if (isa<TemplateTypeParmDecl>(*Param)) {
            QualType ParamType = Context.getTypeDeclType(cast<TypeDecl>(*Param));
            TemplateArgs.push_back(TemplateArgument(ParamType));
        } else if (NonTypeTemplateParmDecl *NTTP =
                       dyn_cast<NonTypeTemplateParmDecl>(*Param)) {
            Expr *E = new (Context) DeclRefExpr(NTTP, NTTP->getType(),
                                                NTTP->getLocation());
            TemplateArgs.push_back(TemplateArgument(E));
        } else {
            TemplateTemplateParmDecl *TTP = cast<TemplateTemplateParmDecl>(*Param);
            TemplateArgs.push_back(TemplateArgument(TemplateName(TTP)));
        }
    }

    CommonPtr->InjectedClassNameType
        = Context.getTemplateSpecializationType(TemplateName(this),
                &TemplateArgs[0],
                TemplateArgs.size());
    return CommonPtr->InjectedClassNameType;
}
开发者ID:silviubaranga,项目名称:SHP,代码行数:35,代码来源:DeclTemplate.cpp


注:本文中的ASTContext::getTemplateSpecializationType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。