A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/classclang_1_1MultiLevelTemplateArgumentList.html below:

clang: clang::MultiLevelTemplateArgumentList Class Reference

Data structure that captures multiple levels of template argument lists for use in template instantiation. More...

#include "clang/Sema/Template.h"

  MultiLevelTemplateArgumentList ()=default   Construct an empty set of template argument lists.
    MultiLevelTemplateArgumentList (Decl *D, ArgList Args, bool Final)   Construct a single-level template argument list.
  void  setKind (TemplateSubstitutionKind K)   TemplateSubstitutionKind  getKind () const   Determine the kind of template substitution being performed.
  bool  isRewrite () const   Determine whether we are rewriting template parameters rather than substituting for them.
  unsigned  getNumLevels () const   Determine the number of levels in this template argument list.
  unsigned  getNumSubstitutedLevels () const   Determine the number of substituted levels in this template argument list.
  unsigned  getNumSubsitutedArgs (unsigned Depth) const   unsigned  getNumRetainedOuterLevels () const   unsigned  getNewDepth (unsigned OldDepth) const   Determine how many of the OldDepth outermost template parameter lists would be removed by substituting these arguments.
  const TemplateArgumentoperator() (unsigned Depth, unsigned Index) const   Retrieve the template argument at a given depth and index.
  std::pair< Decl *, boolgetAssociatedDecl (unsigned Depth) const   A template-like entity which owns the whole pattern being substituted.
  bool  hasTemplateArgument (unsigned Depth, unsigned Index) const   Determine whether there is a non-NULL template argument at the given depth and index.
  bool  isAnyArgInstantiationDependent () const   void  setArgument (unsigned Depth, unsigned Index, TemplateArgument Arg)   Clear out a specific template argument.
  void  addOuterTemplateArguments (Decl *AssociatedDecl, ArgList Args, bool Final)   Add a new outmost level to the multi-level template argument list.
  void  addOuterTemplateArguments (ArgList Args)   void  addOuterTemplateArguments (std::nullopt_t)   void  replaceInnermostTemplateArguments (Decl *AssociatedDecl, ArgList Args)   Replaces the current 'innermost' level with the provided argument list.
  void  addOuterRetainedLevel ()   Add an outermost level that we are not substituting.
  void  addOuterRetainedLevels (unsigned Num)   const ArgListgetInnermost () const   Retrieve the innermost template argument list.
  const ArgListgetOutermost () const   Retrieve the outermost template argument list.
  ArgListsIterator  begin ()   ConstArgListsIterator  begin () const   ArgListsIterator  end ()   ConstArgListsIterator  end () const   LLVM_DUMP_METHOD void  dump () const  

Data structure that captures multiple levels of template argument lists for use in template instantiation.

Multiple levels of template arguments occur when instantiating the definitions of member templates. For example:

template<typename T>

template<T Value>

struct Y {

void f();

};

};

When instantiating X<int>::Y<17>::f, the multi-level template argument list will contain a template argument list (int) at depth 0 and a template argument list (17) at depth 1.

Definition at line 76 of file Template.h.

◆ MultiLevelTemplateArgumentList() [1/2] clang::MultiLevelTemplateArgumentList::MultiLevelTemplateArgumentList ( ) default

Construct an empty set of template argument lists.

◆ MultiLevelTemplateArgumentList() [2/2] clang::MultiLevelTemplateArgumentList::MultiLevelTemplateArgumentList ( DeclD, ArgList  Args, bool  Final  ) inline ◆ addOuterRetainedLevel() void clang::MultiLevelTemplateArgumentList::addOuterRetainedLevel ( ) inline

Add an outermost level that we are not substituting.

We have no arguments at this level, and do not remove it from the depth of inner template parameters that we instantiate.

Definition at line 257 of file Template.h.

◆ addOuterRetainedLevels() void clang::MultiLevelTemplateArgumentList::addOuterRetainedLevels ( unsigned  Num ) inline ◆ addOuterTemplateArguments() [1/3] void clang::MultiLevelTemplateArgumentList::addOuterTemplateArguments ( ArgList  Args ) inline ◆ addOuterTemplateArguments() [2/3] void clang::MultiLevelTemplateArgumentList::addOuterTemplateArguments ( DeclAssociatedDecl, ArgList  Args, bool  Final  ) inline ◆ addOuterTemplateArguments() [3/3] void clang::MultiLevelTemplateArgumentList::addOuterTemplateArguments ( std::nullopt_t  ) inline

Definition at line 228 of file Template.h.

◆ begin() [1/2] ArgListsIterator clang::MultiLevelTemplateArgumentList::begin ( ) inline ◆ begin() [2/2] ConstArgListsIterator clang::MultiLevelTemplateArgumentList::begin ( ) const inline

Definition at line 273 of file Template.h.

◆ dump() LLVM_DUMP_METHOD void clang::MultiLevelTemplateArgumentList::dump ( ) const inline ◆ end() [1/2] ArgListsIterator clang::MultiLevelTemplateArgumentList::end ( ) inline

Definition at line 276 of file Template.h.

◆ end() [2/2] ConstArgListsIterator clang::MultiLevelTemplateArgumentList::end ( ) const inline

Definition at line 277 of file Template.h.

◆ getAssociatedDecl() std::pair< Decl *, bool > clang::MultiLevelTemplateArgumentList::getAssociatedDecl ( unsigned  Depth ) const inline

A template-like entity which owns the whole pattern being substituted.

This will usually own a set of template parameters, or in some cases might even be a template parameter itself.

Definition at line 164 of file Template.h.

References getNumLevels().

◆ getInnermost() const ArgList & clang::MultiLevelTemplateArgumentList::getInnermost ( ) const inline ◆ getKind() ◆ getNewDepth() unsigned clang::MultiLevelTemplateArgumentList::getNewDepth ( unsigned  OldDepth ) const inline

Determine how many of the OldDepth outermost template parameter lists would be removed by substituting these arguments.

Definition at line 145 of file Template.h.

References getNumLevels().

◆ getNumLevels() unsigned clang::MultiLevelTemplateArgumentList::getNumLevels ( ) const inline

Determine the number of levels in this template argument list.

Definition at line 123 of file Template.h.

Referenced by CalculateTemplateDepthForConstraints(), clang::Sema::CheckParameterPacksForExpansion(), dump(), getAssociatedDecl(), getNewDepth(), clang::Sema::getNumArgumentsInExpansionFromUnexpanded(), getNumSubsitutedArgs(), hasTemplateArgument(), clang::TemplateDeclInstantiator::InstantiateTypeAliasTemplateDecl(), operator()(), and setArgument().

◆ getNumRetainedOuterLevels() unsigned clang::MultiLevelTemplateArgumentList::getNumRetainedOuterLevels ( ) const inline ◆ getNumSubsitutedArgs() unsigned clang::MultiLevelTemplateArgumentList::getNumSubsitutedArgs ( unsigned  Depth ) const inline ◆ getNumSubstitutedLevels() unsigned clang::MultiLevelTemplateArgumentList::getNumSubstitutedLevels ( ) const inline ◆ getOutermost() const ArgList & clang::MultiLevelTemplateArgumentList::getOutermost ( ) const inline ◆ hasTemplateArgument() bool clang::MultiLevelTemplateArgumentList::hasTemplateArgument ( unsigned  Depth, unsigned  Index  ) const inline ◆ isAnyArgInstantiationDependent() bool clang::MultiLevelTemplateArgumentList::isAnyArgInstantiationDependent ( ) const inline ◆ isRewrite() bool clang::MultiLevelTemplateArgumentList::isRewrite ( ) const inline

Determine whether we are rewriting template parameters rather than substituting for them.

If so, we should not leave references to the original template parameters behind.

Definition at line 117 of file Template.h.

References clang::Rewrite.

◆ operator()() ◆ replaceInnermostTemplateArguments() void clang::MultiLevelTemplateArgumentList::replaceInnermostTemplateArguments ( DeclAssociatedDecl, ArgList  Args  ) inline

Replaces the current 'innermost' level with the provided argument list.

This is useful for type deduction cases where we need to get the entire list from the AST, but then add the deduced innermost list.

Definition at line 237 of file Template.h.

Referenced by CheckDeducedArgumentConstraints().

◆ setArgument() ◆ setKind()

The documentation for this class was generated from the following file:


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4