reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

tools/clang/include/clang/Sema/Template.h
  189   class DeducedTemplateArgument : public TemplateArgument {

Declarations

tools/clang/include/clang/AST/TemplateName.h
   40 class TemplateArgument;
tools/clang/include/clang/AST/Type.h
  118 class TemplateArgument;
tools/clang/include/clang/Sema/Sema.h
  176   class TemplateArgument;
tools/lldb/include/lldb/Core/ClangForward.h
  109 class TemplateArgument;

References

include/llvm/ADT/ArrayRef.h
   43     using iterator = const T *;
   44     using const_iterator = const T *;
   50     const T *Data = nullptr;
   66     /*implicit*/ ArrayRef(const T &OneElt)
   70     /*implicit*/ ArrayRef(const T *data, size_t length)
   74     ArrayRef(const T *begin, const T *end)
   74     ArrayRef(const T *begin, const T *end)
   81     /*implicit*/ ArrayRef(const SmallVectorTemplateCommon<T, U> &Vec)
   87     /*implicit*/ ArrayRef(const std::vector<T, A> &Vec)
   92     /*implicit*/ constexpr ArrayRef(const std::array<T, N> &Arr)
   97     /*implicit*/ constexpr ArrayRef(const T (&Arr)[N]) : Data(Arr), Length(N) {}
  100     /*implicit*/ ArrayRef(const std::initializer_list<T> &Vec)
  145     const T *data() const { return Data; }
  151     const T &front() const {
  157     const T &back() const {
  163     template <typename Allocator> ArrayRef<T> copy(Allocator &A) {
  164       T *Buff = A.template Allocate<T>(Length);
  164       T *Buff = A.template Allocate<T>(Length);
  178     ArrayRef<T> slice(size_t N, size_t M) const {
  184     ArrayRef<T> slice(size_t N) const { return slice(N, size() - N); }
  187     ArrayRef<T> drop_front(size_t N = 1) const {
  193     ArrayRef<T> drop_back(size_t N = 1) const {
  200     template <class PredicateT> ArrayRef<T> drop_while(PredicateT Pred) const {
  206     template <class PredicateT> ArrayRef<T> drop_until(PredicateT Pred) const {
  211     ArrayRef<T> take_front(size_t N = 1) const {
  218     ArrayRef<T> take_back(size_t N = 1) const {
  226     template <class PredicateT> ArrayRef<T> take_while(PredicateT Pred) const {
  232     template <class PredicateT> ArrayRef<T> take_until(PredicateT Pred) const {
  239     const T &operator[](size_t Index) const {
  249     typename std::enable_if<std::is_same<U, T>::value, ArrayRef<T>>::type &
  257     typename std::enable_if<std::is_same<U, T>::value, ArrayRef<T>>::type &
  263     std::vector<T> vec() const {
  270     operator std::vector<T>() const {
  456   ArrayRef<T> makeArrayRef(const T *data, size_t length) {
  456   ArrayRef<T> makeArrayRef(const T *data, size_t length) {
  462   ArrayRef<T> makeArrayRef(const T *begin, const T *end) {
  462   ArrayRef<T> makeArrayRef(const T *begin, const T *end) {
  462   ArrayRef<T> makeArrayRef(const T *begin, const T *end) {
  468   ArrayRef<T> makeArrayRef(const SmallVectorImpl<T> &Vec) {
  468   ArrayRef<T> makeArrayRef(const SmallVectorImpl<T> &Vec) {
  474   ArrayRef<T> makeArrayRef(const SmallVector<T, N> &Vec) {
  474   ArrayRef<T> makeArrayRef(const SmallVector<T, N> &Vec) {
include/llvm/ADT/STLExtras.h
   80       typename std::add_const<T>::type>::type;
include/llvm/ADT/SmallVector.h
   75   AlignedCharArrayUnion<T> FirstEl;
  114   using value_type = T;
  115   using iterator = T *;
  116   using const_iterator = const T *;
  121   using reference = T &;
  122   using const_reference = const T &;
  123   using pointer = T *;
  124   using const_pointer = const T *;
  259 class SmallVectorTemplateBase<T, true> : public SmallVectorTemplateCommon<T> {
  264   static void destroy_range(T *, T *) {}
  264   static void destroy_range(T *, T *) {}
  286       T1 *I, T1 *E, T2 *Dest,
  286       T1 *I, T1 *E, T2 *Dest,
  286       T1 *I, T1 *E, T2 *Dest,
  287       typename std::enable_if<std::is_same<typename std::remove_const<T1>::type,
  288                                            T2>::value>::type * = nullptr) {
  294       memcpy(reinterpret_cast<void *>(Dest), I, (E - I) * sizeof(T));
  299   void grow(size_t MinSize = 0) { this->grow_pod(MinSize, sizeof(T)); }
  302   void push_back(const T &Elt) {
  305     memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  315 class SmallVectorImpl : public SmallVectorTemplateBase<T> {
  316   using SuperClass = SmallVectorTemplateBase<T>;
  357   void resize(size_type N, const T &NV) {
  374   LLVM_NODISCARD T pop_back_val() {
  375     T Result = ::std::move(this->back());
  397   void append(size_type NumInputs, const T &Elt) {
  405   void append(std::initializer_list<T> IL) {
  412   void assign(size_type NumElts, const T &Elt) {
  429   void assign(std::initializer_list<T> IL) {
  467   iterator insert(iterator I, T &&Elt) {
  497   iterator insert(iterator I, const T &Elt) {
  526   iterator insert(iterator I, size_type NumToInsert, const T &Elt) {
  606       T *OldEnd = this->end();
  621     T *OldEnd = this->end();
  627     for (T *J = I; NumOverwritten > 0; --NumOverwritten) {
  637   void insert(iterator I, std::initializer_list<T> IL) {
  820   AlignedCharArrayUnion<T> InlineElts[N];
  837 class SmallVector : public SmallVectorImpl<T>, SmallVectorStorage<T, N> {
  837 class SmallVector : public SmallVectorImpl<T>, SmallVectorStorage<T, N> {
  846   explicit SmallVector(size_t Size, const T &Value = T())
  865   SmallVector(std::initializer_list<T> IL) : SmallVectorImpl<T>(N) {
  884   SmallVector(SmallVectorImpl<T> &&RHS) : SmallVectorImpl<T>(N) {
include/llvm/Support/AlignOf.h
   24   T t;
   25   AlignerImpl<Ts...> rest;
   30   T t;
   35   char arr[sizeof(T)];
   36   SizerImpl<Ts...> rest;
   39 template <typename T> union SizerImpl<T> { char arr[sizeof(T)]; };
   50       llvm::detail::SizerImpl<T, Ts...>)];
   50       llvm::detail::SizerImpl<T, Ts...>)];
include/llvm/Support/Alignment.h
  103     return Constant<std::alignment_of<T>::value>();
include/llvm/Support/Error.h
  437   static const bool isRef = std::is_reference<T>::value;
  439   using wrap = std::reference_wrapper<typename std::remove_reference<T>::type>;
  444   using storage_type = typename std::conditional<isRef, wrap, T>::type;
  445   using value_type = T;
  448   using reference = typename std::remove_reference<T>::type &;
  449   using const_reference = const typename std::remove_reference<T>::type &;
  450   using pointer = typename std::remove_reference<T>::type *;
  451   using const_pointer = const typename std::remove_reference<T>::type *;
  474   Expected(OtherT &&Val,
  475            typename std::enable_if<std::is_convertible<OtherT, T>::value>::type
  475            typename std::enable_if<std::is_convertible<OtherT, T>::value>::type
  483     new (getStorage()) storage_type(std::forward<OtherT>(Val));
  492   Expected(Expected<OtherT> &&Other,
  493            typename std::enable_if<std::is_convertible<OtherT, T>::value>::type
  493            typename std::enable_if<std::is_convertible<OtherT, T>::value>::type
  594   template <class OtherT> void moveConstruct(Expected<OtherT> &&Other) {
include/llvm/Support/TrailingObjects.h
   77   enum { Alignment = alignof(First) };
  134     : public TrailingObjectsImpl<Align, BaseTy, TopTrailingObj, NextTy,
  137   typedef TrailingObjectsImpl<Align, BaseTy, TopTrailingObj, NextTy, MoreTys...>
  141     static const bool value = alignof(PrevTy) < alignof(NextTy);
  161   static const NextTy *
  163                          TrailingObjectsBase::OverloadToken<NextTy>) {
  171           alignAddr(Ptr, Align::Of<NextTy>()));
  176   static NextTy *
  178                          TrailingObjectsBase::OverloadToken<NextTy>) {
  185       return reinterpret_cast<NextTy *>(alignAddr(Ptr, Align::Of<NextTy>()));
  197         (requiresRealignment() ? llvm::alignTo<alignof(NextTy)>(SizeSoFar)
  199             sizeof(NextTy) * Count1,
  231                                 TrailingTys...>::Alignment,
  232                             BaseTy, TrailingObjects<BaseTy, TrailingTys...>,
  233                             BaseTy, TrailingTys...> {
  241       trailing_objects_internal::AlignmentCalcHelper<TrailingTys...>::Alignment,
  242       BaseTy, TrailingObjects<BaseTy, TrailingTys...>, BaseTy, TrailingTys...>
  242       BaseTy, TrailingObjects<BaseTy, TrailingTys...>, BaseTy, TrailingTys...>
  302   template <typename T> const T *getTrailingObjects() const {
  314   template <typename T> T *getTrailingObjects() {
  332                         TrailingTys, size_t>::type... Counts) {
  342       std::is_same<Foo<TrailingTys...>, Foo<Tys...>>::value, size_t>::type
  342       std::is_same<Foo<TrailingTys...>, Foo<Tys...>>::value, size_t>::type
  344                    TrailingTys, size_t>::type... Counts) {
include/llvm/Support/type_traits.h
   91     T t;
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  145       std::is_copy_constructible<detail::trivial_helper<T>>::value;
  147       !std::is_copy_constructible<T>::value;
  151       std::is_move_constructible<detail::trivial_helper<T>>::value;
  153       !std::is_move_constructible<T>::value;
  157       is_copy_assignable<detail::trivial_helper<T>>::value;
  159       !is_copy_assignable<T>::value;
  163       is_move_assignable<detail::trivial_helper<T>>::value;
  165       !is_move_assignable<T>::value;
  169       std::is_destructible<detail::trivial_helper<T>>::value;
tools/clang/include/clang/AST/ASTContext.h
  688   template <typename T> T *Allocate(size_t Num = 1) const {
  689     return static_cast<T *>(Allocate(Num * sizeof(T), alignof(T)));
  689     return static_cast<T *>(Allocate(Num * sizeof(T), alignof(T)));
 1436                                             const TemplateArgument &ArgPack);
 1444                                          ArrayRef<TemplateArgument> Args,
 1449                                          ArrayRef<TemplateArgument> Args) const;
 1479       const IdentifierInfo *Name, ArrayRef<TemplateArgument> Args) const;
 1481   TemplateArgument getInjectedTemplateArg(NamedDecl *ParamDecl);
 1487                                SmallVectorImpl<TemplateArgument> &Args);
 2010                                         const TemplateArgument &ArgPack) const;
 2442   TemplateArgument getCanonicalTemplateArgument(const TemplateArgument &Arg)
 2442   TemplateArgument getCanonicalTemplateArgument(const TemplateArgument &Arg)
tools/clang/include/clang/AST/ASTNodeTraverser.h
  159   void Visit(const TemplateArgument &A, SourceRange R = {},
  222     else if (const auto *T = N.get<TemplateArgument>())
  222     else if (const auto *T = N.get<TemplateArgument>())
  331     for (const auto &Arg : *T)
  634       for (const auto &A : Node->getPartialArguments())
  643   void VisitExpressionTemplateArgument(const TemplateArgument &TA) {
  646   void VisitPackTemplateArgument(const TemplateArgument &TA) {
  647     for (const auto &TArg : TA.pack_elements())
tools/clang/include/clang/AST/ASTTypeTraits.h
   65     return ASTNodeKind(KindToKindId<T>::Id);
  234   static DynTypedNode create(const T &Node) {
  235     return BaseConverter<T>::create(Node);
  251   const T *get() const {
  252     return BaseConverter<T>::get(NodeKind, Storage.buffer);
  259   const T &getUnchecked() const {
  260     return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
  434     static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
  435       if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
  439     static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
  443     static DynTypedNode create(const T &Node) {
  445       Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
  446       new (Result.Storage.buffer) T(Node);
  461   llvm::AlignedCharArrayUnion<const void *, TemplateArgument,
  496     TemplateArgument, void> : public ValueConverter<TemplateArgument> {};
tools/clang/include/clang/AST/DeclTemplate.h
  225     : private llvm::TrailingObjects<TemplateArgumentList, TemplateArgument> {
  227   const TemplateArgument *Arguments;
  235   TemplateArgumentList(ArrayRef<TemplateArgument> Args);
  250                                           ArrayRef<TemplateArgument> Args);
  256   explicit TemplateArgumentList(OnStackType, ArrayRef<TemplateArgument> Args)
  269   const TemplateArgument &get(unsigned Idx) const {
  275   const TemplateArgument &operator[](unsigned Idx) const { return get(Idx); }
  278   ArrayRef<TemplateArgument> asArray() const {
  287   const TemplateArgument *data() const { return Arguments; }
  596   Profile(llvm::FoldingSetNodeID &ID, ArrayRef<TemplateArgument> TemplateArgs,
  599     for (const TemplateArgument &TemplateArg : TemplateArgs)
  762     static ArrayRef<TemplateArgument> getTemplateArgs(EntryType *D) {
  798                          ArrayRef<TemplateArgument> Args, void *&InsertPos);
  954   static ArrayRef<TemplateArgument>
  979     TemplateArgument *InjectedArgs = nullptr;
 1028   FunctionDecl *findSpecialization(ArrayRef<TemplateArgument> Args,
 1087   ArrayRef<TemplateArgument> getInjectedTemplateArgs();
 1692                                   ArrayRef<TemplateArgument> Args,
 1705          ArrayRef<TemplateArgument> Args,
 1889   Profile(llvm::FoldingSetNodeID &ID, ArrayRef<TemplateArgument> TemplateArgs,
 1892     for (const TemplateArgument &TemplateArg : TemplateArgs)
 1927                                          ArrayRef<TemplateArgument> Args,
 1946          ArrayRef<TemplateArgument> Args,
 2140   findSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 2183   findPartialSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 2546                                 ArrayRef<TemplateArgument> Args);
 2559          ArrayRef<TemplateArgument> Args);
 2731                       ArrayRef<TemplateArgument> TemplateArgs,
 2734     for (const TemplateArgument &TemplateArg : TemplateArgs)
 2767       StorageClass S, ArrayRef<TemplateArgument> Args,
 2785          TypeSourceInfo *TInfo, StorageClass S, ArrayRef<TemplateArgument> Args,
 2960   findSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 3001   findPartialSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
tools/clang/include/clang/AST/ExprCXX.h
 4093       private llvm::TrailingObjects<SizeOfPackExpr, TemplateArgument> {
 4126                  Optional<unsigned> Length, ArrayRef<TemplateArgument> PartialArgs)
 4135     auto *Args = getTrailingObjects<TemplateArgument>();
 4135     auto *Args = getTrailingObjects<TemplateArgument>();
 4148                                 ArrayRef<TemplateArgument> PartialArgs = None);
 4184   ArrayRef<TemplateArgument> getPartialArguments() const {
 4186     const auto *Args = getTrailingObjects<TemplateArgument>();
 4186     const auto *Args = getTrailingObjects<TemplateArgument>();
 4278   const TemplateArgument *Arguments;
 4294                                    const TemplateArgument &ArgPack);
 4304   TemplateArgument getArgumentPack() const;
 4851                                     TemplateArgument> {
 4890                             ArrayRef<TemplateArgument> ConvertedArgs,
 4902          ArrayRef<TemplateArgument> ConvertedArgs, Optional<bool> IsSatisfied);
 4919   ArrayRef<TemplateArgument> getTemplateArguments() const {
 4920     return ArrayRef<TemplateArgument>(getTrailingObjects<TemplateArgument>(),
 4930                             ArrayRef<TemplateArgument> Converted);
tools/clang/include/clang/AST/JSONNodeDumper.h
  195   void Visit(const TemplateArgument &TA, SourceRange R = {},
  310   void VisitNullTemplateArgument(const TemplateArgument &TA);
  311   void VisitTypeTemplateArgument(const TemplateArgument &TA);
  312   void VisitDeclarationTemplateArgument(const TemplateArgument &TA);
  313   void VisitNullPtrTemplateArgument(const TemplateArgument &TA);
  314   void VisitIntegralTemplateArgument(const TemplateArgument &TA);
  315   void VisitTemplateTemplateArgument(const TemplateArgument &TA);
  316   void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA);
  317   void VisitExpressionTemplateArgument(const TemplateArgument &TA);
  318   void VisitPackTemplateArgument(const TemplateArgument &TA);
tools/clang/include/clang/AST/ODRHash.h
   86   void AddTemplateArgument(TemplateArgument TA);
tools/clang/include/clang/AST/RecursiveASTVisitor.h
  262   bool TraverseTemplateArgument(const TemplateArgument &Arg);
  276   bool TraverseTemplateArguments(const TemplateArgument *Args,
  822     const TemplateArgument &Arg) {
  824   case TemplateArgument::Null:
  825   case TemplateArgument::Declaration:
  826   case TemplateArgument::Integral:
  827   case TemplateArgument::NullPtr:
  830   case TemplateArgument::Type:
  833   case TemplateArgument::Template:
  834   case TemplateArgument::TemplateExpansion:
  838   case TemplateArgument::Expression:
  841   case TemplateArgument::Pack:
  854   const TemplateArgument &Arg = ArgLoc.getArgument();
  857   case TemplateArgument::Null:
  858   case TemplateArgument::Declaration:
  859   case TemplateArgument::Integral:
  860   case TemplateArgument::NullPtr:
  863   case TemplateArgument::Type: {
  871   case TemplateArgument::Template:
  872   case TemplateArgument::TemplateExpansion:
  879   case TemplateArgument::Expression:
  882   case TemplateArgument::Pack:
  892     const TemplateArgument *Args, unsigned NumArgs) {
tools/clang/include/clang/AST/TemplateBase.h
  120     const TemplateArgument *Args;
  165   TemplateArgument(const TemplateArgument &Other, QualType Type) {
  218   explicit TemplateArgument(ArrayRef<TemplateArgument> Args) {
  226   static TemplateArgument getEmptyPack() { return TemplateArgument(None); }
  230   static TemplateArgument CreatePackCopy(ASTContext &Context,
  231                                          ArrayRef<TemplateArgument> Args);
  335   using pack_iterator = const TemplateArgument *;
  353   ArrayRef<TemplateArgument> pack_elements() const {
  365   ArrayRef<TemplateArgument> getPackAsArray() const {
  372   bool structurallyEquals(const TemplateArgument &Other) const;
  376   TemplateArgument getPackExpansionPattern() const;
  450   TemplateArgument Argument;
  456   TemplateArgumentLoc(const TemplateArgument &Argument,
  460   TemplateArgumentLoc(const TemplateArgument &Argument, TypeSourceInfo *TInfo)
  465   TemplateArgumentLoc(const TemplateArgument &Argument, Expr *E)
  476   TemplateArgumentLoc(const TemplateArgument &Argument,
  488     if (Argument.getKind() == TemplateArgument::Template ||
  489         Argument.getKind() == TemplateArgument::TemplateExpansion)
  498   const TemplateArgument &getArgument() const {
  532     if (Argument.getKind() != TemplateArgument::Template &&
  533         Argument.getKind() != TemplateArgument::TemplateExpansion)
  539     if (Argument.getKind() != TemplateArgument::Template &&
  540         Argument.getKind() != TemplateArgument::TemplateExpansion)
  546     if (Argument.getKind() != TemplateArgument::TemplateExpansion)
  681                                     const TemplateArgument &Arg);
  693 inline const TemplateArgument &
  699 inline const TemplateArgument &
tools/clang/include/clang/AST/TemplateName.h
  134   const TemplateArgument *Arguments;
  139                                        const TemplateArgument *Arguments)
  150   TemplateArgument getArgumentPack() const;
  157                       const TemplateArgument &ArgPack);
tools/clang/include/clang/AST/TextNodeDumper.h
  160   void Visit(const TemplateArgument &TA, SourceRange R,
  215   void VisitNullTemplateArgument(const TemplateArgument &TA);
  216   void VisitTypeTemplateArgument(const TemplateArgument &TA);
  217   void VisitDeclarationTemplateArgument(const TemplateArgument &TA);
  218   void VisitNullPtrTemplateArgument(const TemplateArgument &TA);
  219   void VisitIntegralTemplateArgument(const TemplateArgument &TA);
  220   void VisitTemplateTemplateArgument(const TemplateArgument &TA);
  221   void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA);
  222   void VisitExpressionTemplateArgument(const TemplateArgument &TA);
  223   void VisitPackTemplateArgument(const TemplateArgument &TA);
tools/clang/include/clang/AST/Type.h
 4741   const TemplateArgument *Arguments;
 4745                                 const TemplateArgument &ArgPack);
 4762   TemplateArgument getArgumentPack() const;
 4767                       const TemplateArgument &ArgPack);
 4932                              ArrayRef<TemplateArgument> Args,
 4974   using iterator = const TemplateArgument *;
 4983   const TemplateArgument *getArgs() const {
 4994   const TemplateArgument &getArg(unsigned Idx) const; // in TemplateBase.h
 4996   ArrayRef<TemplateArgument> template_arguments() const {
 5015                       ArrayRef<TemplateArgument> Args,
 5026                                ArrayRef<TemplateArgument> Args,
 5354                                       ArrayRef<TemplateArgument> Args,
 5357   const TemplateArgument *getArgBuffer() const {
 5361   TemplateArgument *getArgBuffer() {
 5370   const TemplateArgument *getArgs() const {
 5379   const TemplateArgument &getArg(unsigned Idx) const; // in TemplateBase.h
 5381   ArrayRef<TemplateArgument> template_arguments() const {
 5385   using iterator = const TemplateArgument *;
 5402                       ArrayRef<TemplateArgument> Args);
tools/clang/include/clang/AST/TypeLoc.h
 1668                                 const TemplateArgument *Args,
tools/clang/include/clang/ASTMatchers/ASTMatchers.h
  110   const T *getNodeAs(StringRef ID) const {
  111     return MyBoundNodes.getNodeAs<T>(ID);
  492 extern const internal::VariadicAllOfMatcher<TemplateArgument> templateArgument;
  686   ArrayRef<TemplateArgument> List =
  894   ArrayRef<TemplateArgument> List =
  931   if (Node.getKind() != TemplateArgument::Type)
  949   if (Node.getKind() != TemplateArgument::Template)
  969   if (Node.getKind() == TemplateArgument::Declaration)
  987   if (Node.getKind() == TemplateArgument::Expression)
 1004   return Node.getKind() == TemplateArgument::Integral;
 1019   if (Node.getKind() != TemplateArgument::Integral)
 1040   if (Node.getKind() != TemplateArgument::Integral)
tools/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
  160   const T *getNodeAs(StringRef ID) const {
  165     return It->second.get<T>();
  302   virtual bool matches(const T &Node,
  309     return matches(DynNode.getUnchecked<T>(), Finder, Builder);
  345   DynTypedMatcher(MatcherInterface<T> *Implementation)
  346       : SupportedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()),
  436     return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  445   template <typename T> Matcher<T> convertTo() const {
  447     return unconditionalConvertTo<T>();
  454   template <typename T> Matcher<T> unconditionalConvertTo() const;
  499   explicit Matcher(MatcherInterface<T> *Implementation)
  520             std::is_same<T, QualType>::value &&
  534   bool matches(const T &Node,
  581     return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  596 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
  596 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
 1202   operator Matcher<T>() const {
 1243   operator Matcher<T>() const {
 1245                ast_type_traits::ASTNodeKind::getFromNodeKind<T>())
 1246         .template unconditionalConvertTo<T>();
 1255 class BindableMatcher : public Matcher<T> {
 1257   explicit BindableMatcher(const Matcher<T> &M) : Matcher<T>(M) {}
 1258   explicit BindableMatcher(MatcherInterface<T> *Implementation)
 1265   Matcher<T> bind(StringRef ID) const {
 1268         ->template unconditionalConvertTo<T>();
 1370 inline Matcher<T> DynTypedMatcher::unconditionalConvertTo() const {
 1376 BindableMatcher<T> makeAllOfComposite(
 1377     ArrayRef<const Matcher<T> *> InnerMatchers) {
 1388   using PI = llvm::pointee_iterator<const Matcher<T> *const *>;
 1395           ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
 1397           .template unconditionalConvertTo<T>());
 1575     : public VariadicFunction<BindableMatcher<T>, Matcher<T>,
 1575     : public VariadicFunction<BindableMatcher<T>, Matcher<T>,
 1576                               makeAllOfComposite<T>> {
 1739 inline ArrayRef<TemplateArgument>
 1744 inline ArrayRef<TemplateArgument>
 1749 inline ArrayRef<TemplateArgument>
tools/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
  199   ast_matchers::internal::Matcher<T> getTypedMatcher() const {
  202         ->template convertTo<T>();
  227       : MatcherOps(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()) {}
  228   typedef ast_matchers::internal::Matcher<T> MatcherT;
  232     return DynTypedMatcher(Matcher.convertTo<T>());
tools/clang/include/clang/Sema/Sema.h
 1385         const SemaDiagnosticBuilder &Diag, const T &Value) {
 6769   TemplateArgumentLoc getTrivialTemplateArgumentLoc(const TemplateArgument &Arg,
 6855                                               ArrayRef<TemplateArgument> Args);
 6907                                           SmallVectorImpl<TemplateArgument>
 6933                            SmallVectorImpl<TemplateArgument> &Converted,
 6965                                  SmallVectorImpl<TemplateArgument> &Converted,
 6970                            SmallVectorImpl<TemplateArgument> &Converted);
 6976                                    TemplateArgument &Converted,
 6982   BuildExpressionFromDeclTemplateArgument(const TemplateArgument &Arg,
 6986   BuildExpressionFromIntegralTemplateArgument(const TemplateArgument &Arg,
 7091                                   const TemplateArgument *Args,
 7258   void collectUnexpandedParameterPacks(TemplateArgument Arg,
 7440   Optional<unsigned> getFullyPackExpandedSize(TemplateArgument Arg);
 7778     const TemplateArgument *TemplateArgs;
 7790     ArrayRef<TemplateArgument> template_arguments() const {
 7946                           ArrayRef<TemplateArgument> TemplateArgs,
 7953                           ArrayRef<TemplateArgument> TemplateArgs,
 7962                           ArrayRef<TemplateArgument> TemplateArgs,
 7971                           ArrayRef<TemplateArgument> TemplateArgs,
 7980                           ArrayRef<TemplateArgument> TemplateArgs,
 7988                           ArrayRef<TemplateArgument> TemplateArgs,
 7996                           ArrayRef<TemplateArgument> TemplateArgs,
 8004                           ArrayRef<TemplateArgument> TemplateArgs,
 8012                           ArrayRef<TemplateArgument> TemplateArgs,
 8021                           ArrayRef<TemplateArgument> TemplateArgs,
 8057         ArrayRef<TemplateArgument> TemplateArgs = None,
 8465       SmallVectorImpl<TemplateArgument> &Converted,
tools/clang/include/clang/Sema/Template.h
   66     using ArgList = ArrayRef<TemplateArgument>;
   99     const TemplateArgument &operator()(unsigned Depth, unsigned Index) const {
  123                      TemplateArgument Arg) {
  189   class DeducedTemplateArgument : public TemplateArgument {
  197     DeducedTemplateArgument(const TemplateArgument &Arg,
  282     const TemplateArgument *ArgsInPartiallySubstitutedPack;
  397                                      const TemplateArgument *ExplicitArgs,
  413     getPartiallySubstitutedPack(const TemplateArgument **ExplicitArgs = nullptr,
  548         ArrayRef<TemplateArgument> Converted,
tools/clang/include/clang/Sema/TemplateDeduction.h
  194   TemplateArgument FirstArg;
  208   TemplateArgument SecondArg;
  255   const TemplateArgument *getFirstArg();
  259   const TemplateArgument *getSecondArg();
tools/clang/include/clang/Serialization/ASTReader.h
 1779   GetTemplateArgumentLocInfo(ModuleFile &F, TemplateArgument::ArgKind Kind,
 2156   TemplateArgument ReadTemplateArgument(ModuleFile &F, const RecordData &Record,
 2166   void ReadTemplateArgumentList(SmallVectorImpl<TemplateArgument> &TemplArgs,
 2487   getTemplateArgumentLocInfo(TemplateArgument::ArgKind Kind) {
 2583   TemplateArgument readTemplateArgument(bool Canonicalize = false) {
 2593   void readTemplateArgumentList(SmallVectorImpl<TemplateArgument> &TemplArgs,
tools/clang/include/clang/Serialization/ASTWriter.h
  898   void AddTemplateArgumentLocInfo(TemplateArgument::ArgKind Kind,
  932   void AddTemplateArgument(const TemplateArgument &Arg);
tools/clang/lib/AST/ASTContext.cpp
 4086                                               const TemplateArgument &ArgPack) {
 4088   for (const auto &P : ArgPack.pack_elements()) {
 4178   SmallVector<TemplateArgument, 4> ArgVec;
 4187 static bool hasAnyPackExpansions(ArrayRef<TemplateArgument> Args) {
 4188   for (const TemplateArgument &Arg : Args)
 4198                                           ArrayRef<TemplateArgument> Args,
 4225                        sizeof(TemplateArgument) * Args.size() +
 4237     TemplateName Template, ArrayRef<TemplateArgument> Args) const {
 4247   SmallVector<TemplateArgument, 4> CanonArgs;
 4250   for (const TemplateArgument &Arg : Args)
 4266                           sizeof(TemplateArgument) * NumArgs),
 4378   SmallVector<TemplateArgument, 16> ArgCopy;
 4389                                  ArrayRef<TemplateArgument> Args) const {
 4410   SmallVector<TemplateArgument, 16> CanonArgs(NumArgs);
 4428                         sizeof(TemplateArgument) * NumArgs),
 4437 TemplateArgument ASTContext::getInjectedTemplateArg(NamedDecl *Param) {
 4438   TemplateArgument Arg;
 4464     Arg = TemplateArgument::CreatePackCopy(*this, Arg);
 4471                                     SmallVectorImpl<TemplateArgument> &Args) {
 5421     TemplateArgument canonArgPack
 5436 TemplateArgument
 5437 ASTContext::getCanonicalTemplateArgument(const TemplateArgument &Arg) const {
 5439     case TemplateArgument::Null:
 5442     case TemplateArgument::Expression:
 5445     case TemplateArgument::Declaration: {
 5450     case TemplateArgument::NullPtr:
 5454     case TemplateArgument::Template:
 5457     case TemplateArgument::TemplateExpansion:
 5462     case TemplateArgument::Integral:
 5465     case TemplateArgument::Type:
 5468     case TemplateArgument::Pack: {
 5472       auto *CanonArgs = new (*this) TemplateArgument[Arg.pack_size()];
 5472       auto *CanonArgs = new (*this) TemplateArgument[Arg.pack_size()];
 5474       for (TemplateArgument::pack_iterator A = Arg.pack_begin(),
 7855                                        const TemplateArgument &ArgPack) const {
tools/clang/lib/AST/ASTDiagnostic.cpp
  113         SmallVector<TemplateArgument, 4> Args;
  115           const TemplateArgument &Arg = TST->getArg(I);
  116           if (Arg.getKind() == TemplateArgument::Type)
  913     typedef const TemplateArgument& reference;
  914     typedef const TemplateArgument* pointer;
  929       TemplateArgument::pack_iterator CurrentTA;
  932       TemplateArgument::pack_iterator EndTA;
  943         TemplateArgument TA = TST->getArg(0);
  944         if (TA.getKind() != TemplateArgument::Pack) return;
  988           TemplateArgument TA = TST->getArg(Index);
  989           if (TA.getKind() != TemplateArgument::Pack)
 1171         case TemplateArgument::Integral:
 1176         case TemplateArgument::Declaration: {
 1185         case TemplateArgument::NullPtr:
 1188         case TemplateArgument::Expression:
 1197     const TemplateArgument& TA = Iter.getDesugaredTA();
 1201       case TemplateArgument::Integral:
 1206       case TemplateArgument::Declaration: {
 1215       case TemplateArgument::NullPtr:
 1218       case TemplateArgument::Expression:
tools/clang/lib/AST/ASTImporter.cpp
  403         const TemplateArgument *FromArgs, unsigned NumFromArgs,
  404         SmallVectorImpl<TemplateArgument> &ToArgs);
  405     Expected<TemplateArgument>
  406     ImportTemplateArgument(const TemplateArgument &From);
  417     using TemplateArgsTy = SmallVector<TemplateArgument, 8>;
  735 Expected<TemplateArgument>
  736 ASTNodeImporter::import(const TemplateArgument &From) {
  738   case TemplateArgument::Null:
  741   case TemplateArgument::Type: {
  748   case TemplateArgument::Integral: {
  755   case TemplateArgument::Declaration: {
  765   case TemplateArgument::NullPtr: {
  772   case TemplateArgument::Template: {
  780   case TemplateArgument::TemplateExpansion: {
  790   case TemplateArgument::Expression:
  796   case TemplateArgument::Pack: {
  797     SmallVector<TemplateArgument, 2> ToPack;
  814   Expected<TemplateArgument> ArgOrErr = import(TALoc.getArgument());
  817   TemplateArgument Arg = *ArgOrErr;
  822   if (Arg.getKind() == TemplateArgument::Expression) {
  827   } else if (Arg.getKind() == TemplateArgument::Type) {
 1405   SmallVector<TemplateArgument, 2> ToTemplateArgs;
 1462   SmallVector<TemplateArgument, 2> ToPack;
 1952     const TemplateArgument *FromArgs, unsigned NumFromArgs,
 1953     SmallVectorImpl<TemplateArgument> &ToArgs) {
 1965 Expected<TemplateArgument>
 1966 ASTNodeImporter::ImportTemplateArgument(const TemplateArgument &From) {
 5163   SmallVector<TemplateArgument, 2> TemplateArgs;
 5442   SmallVector<TemplateArgument, 2> TemplateArgs;
 7041   SmallVector<TemplateArgument, 8> ToPartialArguments;
tools/clang/lib/AST/ASTStructuralEquivalence.cpp
  102                                      const TemplateArgument &Arg1,
  103                                      const TemplateArgument &Arg2);
  308                                      const TemplateArgument &Arg1,
  309                                      const TemplateArgument &Arg2) {
  314   case TemplateArgument::Null:
  317   case TemplateArgument::Type:
  320   case TemplateArgument::Integral:
  328   case TemplateArgument::Declaration:
  331   case TemplateArgument::NullPtr:
  334   case TemplateArgument::Template:
  338   case TemplateArgument::TemplateExpansion:
  343   case TemplateArgument::Expression:
  347   case TemplateArgument::Pack:
tools/clang/lib/AST/ASTTypeTraits.cpp
  129   if (const TemplateArgument *TA = get<TemplateArgument>())
  129   if (const TemplateArgument *TA = get<TemplateArgument>())
tools/clang/lib/AST/Comment.cpp
  179     if (MaybeFunction.getArgument().getKind() != TemplateArgument::Type)
tools/clang/lib/AST/Decl.cpp
  318 LinkageComputer::getLVForTemplateArgumentList(ArrayRef<TemplateArgument> Args,
  322   for (const TemplateArgument &Arg : Args) {
  324     case TemplateArgument::Null:
  325     case TemplateArgument::Integral:
  326     case TemplateArgument::Expression:
  329     case TemplateArgument::Type:
  333     case TemplateArgument::Declaration: {
  340     case TemplateArgument::NullPtr:
  344     case TemplateArgument::Template:
  345     case TemplateArgument::TemplateExpansion:
  351     case TemplateArgument::Pack:
tools/clang/lib/AST/DeclPrinter.cpp
 1090     const TemplateArgument &A = Args[I];
 1094       if (A.getKind() == TemplateArgument::Type)
 1100       if (A.getKind() == TemplateArgument::Template) {
 1109       if (A.getKind() == TemplateArgument::Expression) {
tools/clang/lib/AST/DeclTemplate.cpp
  237     llvm::FoldingSetVector<EntryType> &Specs, ArrayRef<TemplateArgument> Args,
  313 FunctionTemplateDecl::findSpecialization(ArrayRef<TemplateArgument> Args,
  324 ArrayRef<TemplateArgument> FunctionTemplateDecl::getInjectedTemplateArgs() {
  329     SmallVector<TemplateArgument, 16> TemplateArgs;
  332         new (Context) TemplateArgument[TemplateArgs.size()];
  419 ClassTemplateDecl::findSpecialization(ArrayRef<TemplateArgument> Args,
  430 ClassTemplateDecl::findPartialSpecialization(ArrayRef<TemplateArgument> Args,
  500   SmallVector<TemplateArgument, 16> TemplateArgs;
  707 TemplateArgumentList::TemplateArgumentList(ArrayRef<TemplateArgument> Args)
  708     : Arguments(getTrailingObjects<TemplateArgument>()),
  711                           getTrailingObjects<TemplateArgument>());
  716                                  ArrayRef<TemplateArgument> Args) {
  717   void *Mem = Context.Allocate(totalSizeToAlloc<TemplateArgument>(Args.size()));
  746                                 ArrayRef<TemplateArgument> Args,
  767                                         ArrayRef<TemplateArgument> Args,
  881                                        ArrayRef<TemplateArgument> Args,
  899        ArrayRef<TemplateArgument> Args,
 1036 VarTemplateDecl::findSpecialization(ArrayRef<TemplateArgument> Args,
 1047 VarTemplateDecl::findPartialSpecialization(ArrayRef<TemplateArgument> Args,
 1096     TypeSourceInfo *TInfo, StorageClass S, ArrayRef<TemplateArgument> Args)
 1112     TypeSourceInfo *TInfo, StorageClass S, ArrayRef<TemplateArgument> Args) {
 1163     StorageClass S, ArrayRef<TemplateArgument> Args,
 1179     StorageClass S, ArrayRef<TemplateArgument> Args,
tools/clang/lib/AST/ExprCXX.cpp
 1600                        ArrayRef<TemplateArgument> PartialArgs) {
 1602       Context.Allocate(totalSizeToAlloc<TemplateArgument>(PartialArgs.size()));
 1610       Context.Allocate(totalSizeToAlloc<TemplateArgument>(NumPartialArgs));
 1619                                  const TemplateArgument &ArgPack)
 1625 TemplateArgument SubstNonTypeTemplateParmPackExpr::getArgumentPack() const {
 1758     ArrayRef<TemplateArgument> ConvertedArgs, Optional<bool> IsSatisfied)
 1780     ArrayRef<TemplateArgument> Converted) {
 1785                           getTrailingObjects<TemplateArgument>());
 1815                                   ArrayRef<TemplateArgument> ConvertedArgs,
 1817   void *Buffer = C.Allocate(totalSizeToAlloc<TemplateArgument>(
 1828   void *Buffer = C.Allocate(totalSizeToAlloc<TemplateArgument>(
tools/clang/lib/AST/ExprConstant.cpp
 1023             TAL[0].getKind() == TemplateArgument::Type)
tools/clang/lib/AST/ItaniumMangle.cpp
  468                           const TemplateArgument *TemplateArgs,
  498                         const TemplateArgument *TemplateArgs,
  551   void mangleTemplateArgs(const TemplateArgument *TemplateArgs,
  554   void mangleTemplateArg(TemplateArgument A);
  937                                         const TemplateArgument *TemplateArgs,
 1534                                       const TemplateArgument *TemplateArgs,
 4319       for (const auto &A : SPE->getPartialArguments())
 4525 void CXXNameMangler::mangleTemplateArgs(const TemplateArgument *TemplateArgs,
 4534 void CXXNameMangler::mangleTemplateArg(TemplateArgument A) {
 4543   case TemplateArgument::Null:
 4546   case TemplateArgument::Type:
 4549   case TemplateArgument::Template:
 4553   case TemplateArgument::TemplateExpansion:
 4558   case TemplateArgument::Expression: {
 4578   case TemplateArgument::Integral:
 4581   case TemplateArgument::Declaration: {
 4604   case TemplateArgument::NullPtr: {
 4611   case TemplateArgument::Pack: {
 4614     for (const auto &P : A.pack_elements())
tools/clang/lib/AST/JSONNodeDumper.cpp
  142 void JSONNodeDumper::Visit(const TemplateArgument &TA, SourceRange R,
 1451 void JSONNodeDumper::VisitNullTemplateArgument(const TemplateArgument &TA) {
 1454 void JSONNodeDumper::VisitTypeTemplateArgument(const TemplateArgument &TA) {
 1458     const TemplateArgument &TA) {
 1461 void JSONNodeDumper::VisitNullPtrTemplateArgument(const TemplateArgument &TA) {
 1464 void JSONNodeDumper::VisitIntegralTemplateArgument(const TemplateArgument &TA) {
 1467 void JSONNodeDumper::VisitTemplateTemplateArgument(const TemplateArgument &TA) {
 1472     const TemplateArgument &TA) {
 1477     const TemplateArgument &TA) {
 1480 void JSONNodeDumper::VisitPackTemplateArgument(const TemplateArgument &TA) {
tools/clang/lib/AST/Linkage.h
  105   LinkageInfo getLVForTemplateArgumentList(ArrayRef<TemplateArgument> Args,
tools/clang/lib/AST/MicrosoftMangle.cpp
  384   void mangleTemplateArg(const TemplateDecl *TD, const TemplateArgument &TA,
 1424     const TemplateArgument &TA = TemplateArgs[i];
 1427     if (i > 0 && TA.getKind() == TemplateArgument::Pack &&
 1428         TemplateArgs[i - 1].getKind() == TemplateArgument::Pack)
 1436                                                 const TemplateArgument &TA,
 1448   case TemplateArgument::Null:
 1450   case TemplateArgument::TemplateExpansion:
 1452   case TemplateArgument::Type: {
 1457   case TemplateArgument::Declaration: {
 1478   case TemplateArgument::Integral:
 1482   case TemplateArgument::NullPtr: {
 1511   case TemplateArgument::Expression:
 1514   case TemplateArgument::Pack: {
 1515     ArrayRef<TemplateArgument> TemplateArgs = TA.getPackAsArray();
 1530       for (const TemplateArgument &PA : TemplateArgs)
 1535   case TemplateArgument::Template: {
tools/clang/lib/AST/ODRHash.cpp
  157 void ODRHash::AddTemplateArgument(TemplateArgument TA) {
  162     case TemplateArgument::Null:
  164     case TemplateArgument::Type:
  167     case TemplateArgument::Declaration:
  170     case TemplateArgument::NullPtr:
  171     case TemplateArgument::Integral:
  173     case TemplateArgument::Template:
  174     case TemplateArgument::TemplateExpansion:
  177     case TemplateArgument::Expression:
  180     case TemplateArgument::Pack:
  182       for (auto SubTA : TA.pack_elements()) {
  273   void AddTemplateArgument(TemplateArgument TA) {
  539     for (const TemplateArgument &TA : SpecializationArgs->asArray()) {
  644     for (const TemplateArgument &TA : List.asArray())
 1006     for (const auto &TA : T->template_arguments()) {
 1071     for (const auto &TA : T->template_arguments()) {
tools/clang/lib/AST/QualTypeNames.cpp
   91                                               TemplateArgument &Arg,
   98   if (Arg.getKind() == TemplateArgument::Template) {
  104   } else if (Arg.getKind() == TemplateArgument::Type) {
  127     SmallVector<TemplateArgument, 4> FQArgs;
  132       TemplateArgument Arg(*I);
  159       SmallVector<TemplateArgument, 4> FQArgs;
  163         TemplateArgument Arg(TemplateArgs[I]);
tools/clang/lib/AST/StmtPrinter.cpp
 1798     const TemplateArgument &Pack = Args->get(0);
 1799     for (const auto &P : Pack.pack_elements()) {
tools/clang/lib/AST/StmtProfile.cpp
   73     void VisitTemplateArgument(const TemplateArgument &Arg);
 1864     for (const auto &TA : Args)
 2031 void StmtProfiler::VisitTemplateArgument(const TemplateArgument &Arg) {
 2035   case TemplateArgument::Null:
 2038   case TemplateArgument::Type:
 2042   case TemplateArgument::Template:
 2043   case TemplateArgument::TemplateExpansion:
 2047   case TemplateArgument::Declaration:
 2051   case TemplateArgument::NullPtr:
 2055   case TemplateArgument::Integral:
 2060   case TemplateArgument::Expression:
 2064   case TemplateArgument::Pack:
 2065     for (const auto &P : Arg.pack_elements())
tools/clang/lib/AST/TemplateBase.cpp
   52 static void printIntegral(const TemplateArgument &TemplArg,
  105 TemplateArgument
  107                                  ArrayRef<TemplateArgument> Args) {
  146     for (const auto &P : pack_elements())
  185     for (const auto &P : pack_elements())
  242     for (const auto &P : pack_elements())
  262   case TemplateArgument::Null:
  263   case TemplateArgument::Type:
  264   case TemplateArgument::Template:
  265   case TemplateArgument::TemplateExpansion:
  266   case TemplateArgument::Pack:
  269   case TemplateArgument::Integral:
  272   case TemplateArgument::Expression:
  275   case TemplateArgument::Declaration:
  278   case TemplateArgument::NullPtr:
  338 bool TemplateArgument::structurallyEquals(const TemplateArgument &Other) const {
  368 TemplateArgument TemplateArgument::getPackExpansionPattern() const {
  443     for (const auto &P : pack_elements()) {
  471   case TemplateArgument::Expression:
  474   case TemplateArgument::Declaration:
  477   case TemplateArgument::NullPtr:
  480   case TemplateArgument::Type:
  486   case TemplateArgument::Template:
  492   case TemplateArgument::TemplateExpansion:
  498   case TemplateArgument::Integral:
  501   case TemplateArgument::Pack:
  502   case TemplateArgument::Null:
  510                                            const TemplateArgument &Arg) {
  512   case TemplateArgument::Null:
  517   case TemplateArgument::Type:
  520   case TemplateArgument::Declaration:
  523   case TemplateArgument::NullPtr:
  526   case TemplateArgument::Integral:
  529   case TemplateArgument::Template:
  532   case TemplateArgument::TemplateExpansion:
  535   case TemplateArgument::Expression: {
  548   case TemplateArgument::Pack: {
tools/clang/lib/AST/TemplateName.cpp
   33 TemplateArgument
   57                                              const TemplateArgument &ArgPack) {
tools/clang/lib/AST/TextNodeDumper.cpp
   99 void TextNodeDumper::Visit(const TemplateArgument &TA, SourceRange R,
  584 void TextNodeDumper::VisitNullTemplateArgument(const TemplateArgument &) {
  588 void TextNodeDumper::VisitTypeTemplateArgument(const TemplateArgument &TA) {
  594     const TemplateArgument &TA) {
  599 void TextNodeDumper::VisitNullPtrTemplateArgument(const TemplateArgument &) {
  603 void TextNodeDumper::VisitIntegralTemplateArgument(const TemplateArgument &TA) {
  607 void TextNodeDumper::VisitTemplateTemplateArgument(const TemplateArgument &TA) {
  613     const TemplateArgument &TA) {
  618 void TextNodeDumper::VisitExpressionTemplateArgument(const TemplateArgument &) {
  622 void TextNodeDumper::VisitPackTemplateArgument(const TemplateArgument &) {
tools/clang/lib/AST/Type.cpp
 2703                          ArrayRef<TemplateArgument> Args,
 2712   TemplateArgument *ArgBuffer = getArgBuffer();
 2713   for (const TemplateArgument &Arg : Args) {
 2717     new (ArgBuffer++) TemplateArgument(Arg);
 2727                                              ArrayRef<TemplateArgument> Args) {
 2731   for (const TemplateArgument &Arg : Args)
 3390                               const TemplateArgument &ArgPack)
 3396 TemplateArgument SubstTemplateTypeParmPackType::getArgumentPack() const {
 3406                                             const TemplateArgument &ArgPack) {
 3409   for (const auto &P : ArgPack.pack_elements())
 3437                            ArrayRef<TemplateArgument> Args,
 3455   auto *TemplateArgs = reinterpret_cast<TemplateArgument *>(this + 1);
 3456   for (const TemplateArgument &Arg : Args) {
 3467     if (Arg.getKind() == TemplateArgument::Type &&
 3472     new (TemplateArgs++) TemplateArgument(Arg);
 3477     auto *Begin = reinterpret_cast<TemplateArgument *>(this + 1);
 3485                                     ArrayRef<TemplateArgument> Args,
 3488   for (const TemplateArgument &Arg : Args)
tools/clang/lib/AST/TypeLoc.cpp
  526                                                   const TemplateArgument *Args,
  531     case TemplateArgument::Null:
  534     case TemplateArgument::Integral:
  535     case TemplateArgument::Declaration:
  536     case TemplateArgument::NullPtr:
  540     case TemplateArgument::Expression:
  544     case TemplateArgument::Type:
  550     case TemplateArgument::Template:
  551     case TemplateArgument::TemplateExpansion: {
  561           Args[i].getKind() == TemplateArgument::Template ? SourceLocation()
  566     case TemplateArgument::Pack:
tools/clang/lib/AST/TypePrinter.cpp
 1206     ArrayRef<TemplateArgument> Args;
 1658 const TemplateArgument &getArgument(const TemplateArgument &A) { return A; }
 1658 const TemplateArgument &getArgument(const TemplateArgument &A) { return A; }
 1660 static const TemplateArgument &getArgument(const TemplateArgumentLoc &A) {
 1664 static void printArgument(const TemplateArgument &A, const PrintingPolicy &PP,
 1671   const TemplateArgument::ArgKind &Kind = A.getArgument().getKind();
 1672   if (Kind == TemplateArgument::ArgKind::Type)
 1678 static void printTo(raw_ostream &OS, ArrayRef<TA> Args,
 1686   for (const auto &Arg : Args) {
 1690     const TemplateArgument &Argument = getArgument(Arg);
 1691     if (Argument.getKind() == TemplateArgument::Pack) {
 1732                                       ArrayRef<TemplateArgument> Args,
tools/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
  584 const internal::VariadicAllOfMatcher<TemplateArgument> templateArgument;
tools/clang/lib/ASTMatchers/Dynamic/Marshallers.h
   75     return Value.isMatcher() && Value.getMatcher().hasTypedMatcher<T>();
   78   static ast_matchers::internal::Matcher<T> get(const VariantValue &Value) {
   79     return Value.getMatcher().getTypedMatcher<T>();
   83     return ArgKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  361     RetTypes.push_back(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  368     RetTypes.push_back(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
tools/clang/lib/Analysis/PathDiagnostic.cpp
  873                                        const ArrayRef<TemplateArgument> TAList,
  879                                       const TemplateArgument &TArg,
  882   if (TArg.getKind() == TemplateArgument::ArgKind::Pack) {
  890                                        const ArrayRef<TemplateArgument> TAList,
tools/clang/lib/CodeGen/CGDebugInfo.cpp
 1746                                    ArrayRef<TemplateArgument> TAList,
 1750     const TemplateArgument &TA = TAList[i];
 1755     case TemplateArgument::Type: {
 1760     case TemplateArgument::Integral: {
 1766     case TemplateArgument::Declaration: {
 1804     case TemplateArgument::NullPtr: {
 1823     case TemplateArgument::Template:
 1828     case TemplateArgument::Pack:
 1833     case TemplateArgument::Expression: {
 1845     case TemplateArgument::TemplateExpansion:
 1846     case TemplateArgument::Null:
tools/clang/lib/CodeGen/CGDebugInfo.h
  251                                           ArrayRef<TemplateArgument> TAList,
tools/clang/lib/Index/IndexDecl.cpp
   59     case TemplateArgument::Expression:
   62     case TemplateArgument::Type:
   65     case TemplateArgument::Template:
   66     case TemplateArgument::TemplateExpansion:
tools/clang/lib/Index/USRGeneration.cpp
  166   void VisitTemplateArgument(const TemplateArgument &Arg);
  942 void USRGenerator::VisitTemplateArgument(const TemplateArgument &Arg) {
  944   case TemplateArgument::Null:
  947   case TemplateArgument::Declaration:
  951   case TemplateArgument::NullPtr:
  954   case TemplateArgument::TemplateExpansion:
  957   case TemplateArgument::Template:
  961   case TemplateArgument::Expression:
  965   case TemplateArgument::Pack:
  967     for (const auto &P : Arg.pack_elements())
  971   case TemplateArgument::Type:
  975   case TemplateArgument::Integral:
tools/clang/lib/Sema/SemaChecking.cpp
 9261   const auto& TA = ArgList->get(0);
 9262   if (TA.getKind() != TemplateArgument::Type) return;
tools/clang/lib/Sema/SemaCodeComplete.cpp
 4271     const TemplateArgument &Argument = Specialization->getArg(0);
 4272     if (Argument.getKind() != TemplateArgument::Type)
tools/clang/lib/Sema/SemaDeclCXX.cpp
 1018   TemplateArgument Arg(S.Context, S.Context.MakeIntValue(I, T), T);
 5643       if (TAL.getArgument().getKind() == TemplateArgument::Type)
 9656   const TemplateArgument *Arguments = nullptr;
tools/clang/lib/Sema/SemaExpr.cpp
 1747     TemplateArgument TypeArg(CharTy);
 1753       TemplateArgument Arg(Context, Value, CharTy);
 3499         TemplateArgument Arg(Context, Value, Context.CharTy);
16972     bool TraverseTemplateArgument(const TemplateArgument &Arg);
16977     const TemplateArgument &Arg) {
16982     if (Arg.getKind() == TemplateArgument::Declaration) {
16985     } else if (Arg.getKind() == TemplateArgument::Expression) {
tools/clang/lib/Sema/SemaExprCXX.cpp
  613     for (const TemplateArgument &TA : TAL.asArray()) {
  615       if (TA.getKind() == TemplateArgument::Type)
  617       else if (TA.getKind() == TemplateArgument::Declaration)
tools/clang/lib/Sema/SemaLookup.cpp
 2668                                   const TemplateArgument &Arg) {
 2672     case TemplateArgument::Null:
 2675     case TemplateArgument::Type:
 2682     case TemplateArgument::Template:
 2683     case TemplateArgument::TemplateExpansion: {
 2699     case TemplateArgument::Declaration:
 2700     case TemplateArgument::Integral:
 2701     case TemplateArgument::Expression:
 2702     case TemplateArgument::NullPtr:
 2707     case TemplateArgument::Pack:
 2708       for (const auto &P : Arg.pack_elements())
tools/clang/lib/Sema/SemaOverload.cpp
  580     TemplateArgument FirstArg;
  581     TemplateArgument SecondArg;
  780 const TemplateArgument *DeductionFailureInfo::getFirstArg() {
  810 const TemplateArgument *DeductionFailureInfo::getSecondArg() {
10432     TemplateArgument FirstTA = *DeductionFailure.getFirstArg();
10433     TemplateArgument SecondTA = *DeductionFailure.getSecondArg();
10434     if (FirstTA.getKind() == TemplateArgument::Template &&
10435         SecondTA.getKind() == TemplateArgument::Template) {
tools/clang/lib/Sema/SemaTemplate.cpp
  885     TemplateArgument TArg;
 1230     TemplateArgument Converted;
 1762     SmallVector<TemplateArgument, 16> SubstArgs;
 2991                            const SmallVectorImpl<TemplateArgument> &Converted,
 3010     TemplateArgument NumArgsArg = Converted[2];
 3026       TemplateArgument TA(Context, I, ArgTy);
 3044     TemplateArgument IndexArg = Converted[0], Ts = Converted[1];
 3228   SmallVector<TemplateArgument, 4> Converted;
 3272                 == TemplateArgument::Expression) {
 3648     const TemplateArgument &Arg, unsigned Depth, unsigned Index) {
 3650   case TemplateArgument::Null:
 3651   case TemplateArgument::NullPtr:
 3652   case TemplateArgument::Integral:
 3653   case TemplateArgument::Declaration:
 3654   case TemplateArgument::Pack:
 3655   case TemplateArgument::TemplateExpansion:
 3658   case TemplateArgument::Type: {
 3666   case TemplateArgument::Expression: {
 3675   case TemplateArgument::Template:
 3685                                     ArrayRef<TemplateArgument> Args) {
 3692     TemplateArgument Arg = Args[I];
 3697       if (Arg.getKind() != TemplateArgument::Pack || Arg.pack_size() != 1 ||
 3873   SmallVector<TemplateArgument, 4> Converted;
 4042   SmallVector<TemplateArgument, 4> Converted;
 4230   llvm::SmallVector<TemplateArgument, 4> Converted;
 4239   for (TemplateArgument &Arg : Converted) {
 4484                           SmallVectorImpl<TemplateArgument> &Converted) {
 4485   const TemplateArgument &Arg = AL.getArgument();
 4491   case TemplateArgument::Type:
 4498   case TemplateArgument::Template:
 4499   case TemplateArgument::TemplateExpansion: {
 4507   case TemplateArgument::Expression: {
 4624                              SmallVectorImpl<TemplateArgument> &Converted) {
 4733                        SmallVectorImpl<TemplateArgument> &Converted,
 4774                                               SmallVectorImpl<TemplateArgument>
 4899                             SmallVectorImpl<TemplateArgument> &Converted,
 4952     case TemplateArgument::Null:
 4955     case TemplateArgument::Expression: {
 4956       TemplateArgument Result;
 4970         TemplateArgument TA(Res.get());
 4978     case TemplateArgument::Declaration:
 4979     case TemplateArgument::Integral:
 4980     case TemplateArgument::NullPtr:
 4986     case TemplateArgument::Template:
 4987     case TemplateArgument::TemplateExpansion:
 5013         if (Arg.getArgument().getKind() == TemplateArgument::TemplateExpansion){
 5019         TemplateArgument Result;
 5037     case TemplateArgument::Type: {
 5058     case TemplateArgument::Pack:
 5098   if (Arg.getArgument().getKind() == TemplateArgument::Type) {
 5106   case TemplateArgument::Null:
 5109   case TemplateArgument::Template:
 5110   case TemplateArgument::TemplateExpansion:
 5117   case TemplateArgument::Expression:
 5118   case TemplateArgument::Type:
 5125   case TemplateArgument::Declaration:
 5127   case TemplateArgument::Integral:
 5129   case TemplateArgument::NullPtr:
 5132   case TemplateArgument::Pack:
 5208     SmallVectorImpl<TemplateArgument> &Converted,
 5230   SmallVector<TemplateArgument, 2> ArgumentPack;
 5243             TemplateArgument::CreatePackCopy(Context, ArgumentPack));
 5323             TemplateArgument::CreatePackCopy(Context, ArgumentPack));
 5341           TemplateArgument::CreatePackCopy(Context, ArgumentPack));
 5921                                                TemplateArgument &Converted) {
 6207                                                  TemplateArgument &Converted) {
 6955   if (Arg.getKind() == TemplateArgument::NullPtr) {
 7553     const TemplateArgument *Args, unsigned NumArgs, bool IsDefaultArgument) {
 7555     if (Args[I].getKind() == TemplateArgument::Pack) {
 7564     if (Args[I].getKind() != TemplateArgument::Expression)
 7650     unsigned NumExplicit, ArrayRef<TemplateArgument> TemplateArgs) {
 7795   SmallVector<TemplateArgument, 4> Converted;
 9041   SmallVector<TemplateArgument, 4> Converted;
 9952         != TemplateArgument::Expression)
10285                                       const TemplateArgument *Args,
tools/clang/lib/Sema/SemaTemplateDeduction.cpp
  136                         const TemplateArgument &Param,
  137                         TemplateArgument Arg,
  155                         ArrayRef<TemplateArgument> Params,
  156                         ArrayRef<TemplateArgument> Args,
  162                                        const TemplateArgument &TemplateArg,
  237   case TemplateArgument::Null:
  240   case TemplateArgument::Type:
  242     if (Y.getKind() == TemplateArgument::Type &&
  254   case TemplateArgument::Integral:
  258     if (Y.getKind() == TemplateArgument::Expression ||
  259         Y.getKind() == TemplateArgument::Declaration ||
  260         (Y.getKind() == TemplateArgument::Integral &&
  267   case TemplateArgument::Template:
  268     if (Y.getKind() == TemplateArgument::Template &&
  275   case TemplateArgument::TemplateExpansion:
  276     if (Y.getKind() == TemplateArgument::TemplateExpansion &&
  284   case TemplateArgument::Expression: {
  285     if (Y.getKind() != TemplateArgument::Expression)
  299   case TemplateArgument::Declaration:
  304     if (Y.getKind() == TemplateArgument::Expression)
  310     if (Y.getKind() == TemplateArgument::Integral) {
  319     if (Y.getKind() == TemplateArgument::Declaration &&
  326   case TemplateArgument::NullPtr:
  329     if (Y.getKind() == TemplateArgument::Expression)
  334     if (Y.getKind() == TemplateArgument::Integral)
  338     if (Y.getKind() == TemplateArgument::NullPtr)
  344   case TemplateArgument::Pack: {
  345     if (Y.getKind() != TemplateArgument::Pack ||
  349     llvm::SmallVector<TemplateArgument, 8> NewPack;
  350     for (TemplateArgument::pack_iterator XA = X.pack_begin(),
  354       TemplateArgument Merged = checkDeducedTemplateArguments(
  363         TemplateArgument::CreatePackCopy(Context, NewPack),
  473   TemplateArgument New(D, T);
  685                      TemplateDeductionInfo &Info, TemplateArgument Pattern)
  718   unsigned addPacks(TemplateArgument Pattern) {
  760     const TemplateArgument *PartialPackArgs = nullptr;
  891         NewPack = DeducedTemplateArgument(TemplateArgument::getEmptyPack());
  893         TemplateArgument *ArgumentPack =
  894             new (S.Context) TemplateArgument[Pack.New.size()];
 2119                         const TemplateArgument &Param,
 2120                         TemplateArgument Arg,
 2130   case TemplateArgument::Null:
 2133   case TemplateArgument::Type:
 2134     if (Arg.getKind() == TemplateArgument::Type)
 2143   case TemplateArgument::Template:
 2144     if (Arg.getKind() == TemplateArgument::Template)
 2152   case TemplateArgument::TemplateExpansion:
 2155   case TemplateArgument::Declaration:
 2156     if (Arg.getKind() == TemplateArgument::Declaration &&
 2164   case TemplateArgument::NullPtr:
 2165     if (Arg.getKind() == TemplateArgument::NullPtr &&
 2173   case TemplateArgument::Integral:
 2174     if (Arg.getKind() == TemplateArgument::Integral) {
 2183     if (Arg.getKind() == TemplateArgument::Expression) {
 2193   case TemplateArgument::Expression:
 2196       if (Arg.getKind() == TemplateArgument::Integral)
 2202       if (Arg.getKind() == TemplateArgument::NullPtr)
 2206       if (Arg.getKind() == TemplateArgument::Expression)
 2209       if (Arg.getKind() == TemplateArgument::Declaration)
 2223   case TemplateArgument::Pack:
 2238 static bool hasTemplateArgumentForDeduction(ArrayRef<TemplateArgument> &Args,
 2243   const TemplateArgument &Arg = Args[ArgIdx];
 2244   if (Arg.getKind() != TemplateArgument::Pack)
 2255 static bool hasPackExpansionBeforeEnd(ArrayRef<TemplateArgument> Args) {
 2257   for (const auto &A : Args) {
 2261     if (A.getKind() == TemplateArgument::Pack)
 2275                         ArrayRef<TemplateArgument> Params,
 2276                         ArrayRef<TemplateArgument> Args,
 2327     TemplateArgument Pattern = Params[ParamIdx].getPackExpansionPattern();
 2370                               TemplateArgument X,
 2371                               const TemplateArgument &Y,
 2382     case TemplateArgument::Null:
 2385     case TemplateArgument::Type:
 2389     case TemplateArgument::Declaration:
 2392     case TemplateArgument::NullPtr:
 2395     case TemplateArgument::Template:
 2396     case TemplateArgument::TemplateExpansion:
 2402     case TemplateArgument::Integral:
 2405     case TemplateArgument::Expression: {
 2412     case TemplateArgument::Pack:
 2416       for (TemplateArgument::pack_iterator XP = X.pack_begin(),
 2443 Sema::getTrivialTemplateArgumentLoc(const TemplateArgument &Arg,
 2446   case TemplateArgument::Null:
 2449   case TemplateArgument::Type:
 2453   case TemplateArgument::Declaration: {
 2461   case TemplateArgument::NullPtr: {
 2470   case TemplateArgument::Integral: {
 2476     case TemplateArgument::Template:
 2477     case TemplateArgument::TemplateExpansion: {
 2486       if (Arg.getKind() == TemplateArgument::Template)
 2494   case TemplateArgument::Expression:
 2497   case TemplateArgument::Pack:
 2512                                SmallVectorImpl<TemplateArgument> &Output) {
 2531   if (Arg.getKind() == TemplateArgument::Pack) {
 2534     SmallVector<TemplateArgument, 2> PackedArgsBuilder;
 2535     for (const auto &P : Arg.pack_elements()) {
 2587         TemplateArgument::CreatePackCopy(S.Context, PackedArgsBuilder));
 2601     TemplateDeductionInfo &Info, SmallVectorImpl<TemplateArgument> &Builder,
 2731   SmallVector<TemplateArgument, 4> Builder;
 2770   SmallVector<TemplateArgument, 4> ConvertedInstArgs;
 2777     TemplateArgument InstArg = ConvertedInstArgs.data()[I];
 2810   SmallVector<TemplateArgument, 4> Builder;
 2818     TemplateArgument InstArg = Builder[I];
 2865   SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end());
 2906   SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end());
 2996   SmallVector<TemplateArgument, 4> Builder;
 3001   SmallVector<TemplateArgument, 4> DeducedArgs;
 3036     const TemplateArgument &Arg = Builder.back();
 3037     if (Arg.getKind() == TemplateArgument::Pack) {
 3148     const TemplateArgument &Arg = ExplicitArgumentList->get(I);
 3324   SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end());
 3336   SmallVector<TemplateArgument, 4> Builder;
 4539           Deduced[0].getKind() != TemplateArgument::Null)
 4555   if (Deduced[0].getKind() != TemplateArgument::Type)
 5085   SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(),
 5173   SmallVector<TemplateArgument, 8> PrimaryArgs;
 5211   SmallVector<TemplateArgument, 8> AArgs;
 5218   SmallVector<TemplateArgument, 4> PArgs;
 5227       TemplateArgument Arg = PArgs[I];
 5228       if (Arg.getKind() == TemplateArgument::Pack) {
 5623                            const TemplateArgument &TemplateArg,
 5628   case TemplateArgument::Null:
 5629   case TemplateArgument::Integral:
 5630   case TemplateArgument::Declaration:
 5633   case TemplateArgument::NullPtr:
 5638   case TemplateArgument::Type:
 5643   case TemplateArgument::Template:
 5644   case TemplateArgument::TemplateExpansion:
 5650   case TemplateArgument::Expression:
 5655   case TemplateArgument::Pack:
 5656     for (const auto &P : TemplateArg.pack_elements())
tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
  223     Decl *Entity, NamedDecl *Template, ArrayRef<TemplateArgument> TemplateArgs,
  271     TemplateDecl *Template, ArrayRef<TemplateArgument> TemplateArgs,
  282     ArrayRef<TemplateArgument> TemplateArgs,
  296     ArrayRef<TemplateArgument> TemplateArgs,
  307     ArrayRef<TemplateArgument> TemplateArgs,
  318     ArrayRef<TemplateArgument> TemplateArgs,
  328     ArrayRef<TemplateArgument> TemplateArgs, SourceRange InstantiationRange)
  337     NonTypeTemplateParmDecl *Param, ArrayRef<TemplateArgument> TemplateArgs,
  347     TemplateTemplateParmDecl *Param, ArrayRef<TemplateArgument> TemplateArgs,
  357     NamedDecl *Param, ArrayRef<TemplateArgument> TemplateArgs,
  367     ArrayRef<TemplateArgument> TemplateArgs, SourceRange InstantiationRange)
  843     TemplateArgument ForgetPartiallySubstitutedPack() {
  844       TemplateArgument Result;
  860     void RememberPartiallySubstitutedPack(TemplateArgument Arg) {
 1035 static TemplateArgument
 1036 getPackSubstitutedTemplateArgument(Sema &S, TemplateArgument Arg) {
 1059       TemplateArgument Arg = TemplateArgs(TTP->getDepth(), TTP->getPosition());
 1100       TemplateArgument Arg = TemplateArgs(TTP->getDepth(), TTP->getIndex());
 1198       TemplateArgument Arg = TemplateArgs(TTP->getDepth(), TTP->getPosition());
 1229     TemplateArgument Arg = SubstPack->getArgumentPack();
 1258   TemplateArgument Arg = TemplateArgs(NTTP->getDepth(), NTTP->getPosition());
 1265     if (Arg.getKind() == TemplateArgument::Pack) {
 1328   if (arg.getKind() == TemplateArgument::Expression) {
 1333   } else if (arg.getKind() == TemplateArgument::Declaration ||
 1334              arg.getKind() == TemplateArgument::NullPtr) {
 1336     if (arg.getKind() == TemplateArgument::Declaration) {
 1390   TemplateArgument Arg = E->getArgumentPack();
 1540     TemplateArgument Arg = TemplateArgs(T->getDepth(), T->getIndex());
 1604   TemplateArgument Arg = TL.getTypePtr()->getArgumentPack();
 3088                                           const TemplateArgument *ExplicitArgs,
 3101                                          const TemplateArgument **ExplicitArgs,
tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
 1770     ArrayRef<TemplateArgument> Innermost = TemplateArgs.getInnermost();
 1904     ArrayRef<TemplateArgument> Innermost = TemplateArgs.getInnermost();
 2076     ArrayRef<TemplateArgument> Innermost = TemplateArgs.getInnermost();
 2211     ArrayRef<TemplateArgument> Innermost = TemplateArgs.getInnermost();
 3277   SmallVector<TemplateArgument, 4> Converted;
 3401   SmallVector<TemplateArgument, 4> Converted;
 3427     ArrayRef<TemplateArgument> Converted,
 3587   SmallVector<TemplateArgument, 4> Converted;
 3714   SmallVector<TemplateArgument, 4> Converted;
 4409     SmallVectorImpl<TemplateArgument> &Converted,
 5445           for (TemplateArgument Arg : TemplateArgs.getInnermost().take_front(
 5447             ArrayRef<TemplateArgument> Unpacked(Arg);
 5448             if (Arg.getKind() == TemplateArgument::Pack)
 5450             for (TemplateArgument UnpackedArg : Unpacked)
tools/clang/lib/Sema/SemaTemplateVariadic.cpp
  206     bool TraverseTemplateArgument(const TemplateArgument &Arg) {
  491 void Sema::collectUnexpandedParameterPacks(TemplateArgument Arg,
 1028   const TemplateArgument &Argument = OrigLoc.getArgument();
 1031   case TemplateArgument::Type: {
 1056   case TemplateArgument::Expression: {
 1065   case TemplateArgument::TemplateExpansion:
 1072   case TemplateArgument::Declaration:
 1073   case TemplateArgument::NullPtr:
 1074   case TemplateArgument::Template:
 1075   case TemplateArgument::Integral:
 1076   case TemplateArgument::Pack:
 1077   case TemplateArgument::Null:
 1084 Optional<unsigned> Sema::getFullyPackExpandedSize(TemplateArgument Arg) {
 1092   TemplateArgument Pack;
 1094   case TemplateArgument::Type:
 1101   case TemplateArgument::Expression:
 1114   case TemplateArgument::Template:
 1122   case TemplateArgument::Declaration:
 1123   case TemplateArgument::NullPtr:
 1124   case TemplateArgument::TemplateExpansion:
 1125   case TemplateArgument::Integral:
 1126   case TemplateArgument::Pack:
 1127   case TemplateArgument::Null:
 1132   for (TemplateArgument Elem : Pack.pack_elements()) {
tools/clang/lib/Sema/TreeTransform.h
  101     TemplateArgument Old;
  273   TemplateArgument ForgetPartiallySubstitutedPack() {
  282   void RememberPartiallySubstitutedPack(TemplateArgument Arg) { }
  595   void InventTemplateArgumentLoc(const TemplateArgument &Arg,
 1213                                    const TemplateArgument &ArgPack) {
 3267     case TemplateArgument::Expression: {
 3277     case TemplateArgument::Template:
 3285     case TemplateArgument::Null:
 3286     case TemplateArgument::Integral:
 3287     case TemplateArgument::Declaration:
 3288     case TemplateArgument::Pack:
 3289     case TemplateArgument::TemplateExpansion:
 3290     case TemplateArgument::NullPtr:
 3293     case TemplateArgument::Type:
 3934                                          const TemplateArgument &Arg,
 3938   case TemplateArgument::Null:
 3942   case TemplateArgument::Type:
 3948   case TemplateArgument::Template:
 3949   case TemplateArgument::TemplateExpansion: {
 3957     if (Arg.getKind() == TemplateArgument::Template)
 3969   case TemplateArgument::Expression:
 3973   case TemplateArgument::Declaration:
 3974   case TemplateArgument::Integral:
 3975   case TemplateArgument::Pack:
 3976   case TemplateArgument::NullPtr:
 3986   const TemplateArgument &Arg = Input.getArgument();
 3988   case TemplateArgument::Null:
 3989   case TemplateArgument::Integral:
 3990   case TemplateArgument::Pack:
 3991   case TemplateArgument::Declaration:
 3992   case TemplateArgument::NullPtr:
 3995   case TemplateArgument::Type: {
 4007   case TemplateArgument::Template: {
 4028   case TemplateArgument::TemplateExpansion:
 4031   case TemplateArgument::Expression: {
 4123     if (In.getArgument().getKind() == TemplateArgument::Pack) {
 4130                                                 TemplateArgument::pack_iterator>
11992   ArrayRef<TemplateArgument> PackArgs;
11993   TemplateArgument ArgStorage;
12046   for (const TemplateArgument &Arg : PackArgs) {
12094         Derived, const TemplateArgument*> PackLocIterator;
12103   SmallVector<TemplateArgument, 8> Args;
tools/clang/lib/Serialization/ASTReader.cpp
 6738     TemplateArgument ArgPack = ReadTemplateArgument(*Loc.F, Record, Idx);
 6791     SmallVector<TemplateArgument, 8> Args;
 6820     SmallVector<TemplateArgument, 8> Args;
 7538                                       TemplateArgument::ArgKind Kind,
 7542   case TemplateArgument::Expression:
 7544   case TemplateArgument::Type:
 7546   case TemplateArgument::Template: {
 7553   case TemplateArgument::TemplateExpansion: {
 7561   case TemplateArgument::Null:
 7562   case TemplateArgument::Integral:
 7563   case TemplateArgument::Declaration:
 7564   case TemplateArgument::NullPtr:
 7565   case TemplateArgument::Pack:
 7575   TemplateArgument Arg = ReadTemplateArgument(F, Record, Index);
 7577   if (Arg.getKind() == TemplateArgument::Expression) {
 9270     TemplateArgument ArgPack = ReadTemplateArgument(F, Record, Idx);
 9271     if (ArgPack.getKind() != TemplateArgument::Pack)
 9281 TemplateArgument ASTReader::ReadTemplateArgument(ModuleFile &F,
 9291     TemplateArgument Arg = ReadTemplateArgument(F, Record, Idx, false);
 9295   TemplateArgument::ArgKind Kind = (TemplateArgument::ArgKind)Record[Idx++];
 9297   case TemplateArgument::Null:
 9299   case TemplateArgument::Type:
 9301   case TemplateArgument::Declaration: {
 9305   case TemplateArgument::NullPtr:
 9307   case TemplateArgument::Integral: {
 9312   case TemplateArgument::Template:
 9314   case TemplateArgument::TemplateExpansion: {
 9321   case TemplateArgument::Expression:
 9323   case TemplateArgument::Pack: {
 9325     TemplateArgument *Args = new (Context) TemplateArgument[NumArgs];
 9325     TemplateArgument *Args = new (Context) TemplateArgument[NumArgs];
 9358 ReadTemplateArgumentList(SmallVectorImpl<TemplateArgument> &TemplArgs,
11210                 llvm::SmallVector<const TemplateArgument *, 8> ExpandedList;
11211                 for (const TemplateArgument &TA : TAL->asArray()) {
11212                   if (TA.getKind() != TemplateArgument::Pack) {
11216                   for (const TemplateArgument &PackTA : TA.getPackAsArray()) {
11222           llvm::SmallVector<const TemplateArgument *, 8> FirstExpandedList =
11224           llvm::SmallVector<const TemplateArgument *, 8> SecondExpandedList =
11245             const TemplateArgument &FirstTA = *FirstExpandedList[i],
11641               TemplateArgument FirstTA =
11643               TemplateArgument SecondTA =
tools/clang/lib/Serialization/ASTReaderDecl.cpp
  909     SmallVector<TemplateArgument, 8> TemplArgs;
 2102       SmallVector<TemplateArgument, 8> TemplArgs;
 2116   SmallVector<TemplateArgument, 8> TemplArgs;
 2215       SmallVector<TemplateArgument, 8> TemplArgs;
 2239   SmallVector<TemplateArgument, 8> TemplArgs;
 4395           SmallVector<TemplateArgument, 8> TemplArgs;
tools/clang/lib/Serialization/ASTReaderStmt.cpp
  748   llvm::SmallVector<TemplateArgument, 4> Args;
 1861     for (auto *I = E->getTrailingObjects<TemplateArgument>(),
 1861     for (auto *I = E->getTrailingObjects<TemplateArgument>(),
 1864       new (I) TemplateArgument(Record.readTemplateArgument());
 1882   TemplateArgument ArgPack = Record.readTemplateArgument();
 1883   if (ArgPack.getKind() != TemplateArgument::Pack)
tools/clang/lib/Serialization/ASTWriter.cpp
  433   for (const auto &ArgI : *T)
  502   for (const auto &I : *T)
 5577     TemplateArgument::ArgKind Kind, const TemplateArgumentLocInfo &Arg) {
 5579   case TemplateArgument::Expression:
 5582   case TemplateArgument::Type:
 5585   case TemplateArgument::Template:
 5589   case TemplateArgument::TemplateExpansion:
 5594   case TemplateArgument::Null:
 5595   case TemplateArgument::Integral:
 5596   case TemplateArgument::Declaration:
 5597   case TemplateArgument::NullPtr:
 5598   case TemplateArgument::Pack:
 5607   if (Arg.getArgument().getKind() == TemplateArgument::Expression) {
 6028 void ASTRecordWriter::AddTemplateArgument(const TemplateArgument &Arg) {
 6031   case TemplateArgument::Null:
 6033   case TemplateArgument::Type:
 6036   case TemplateArgument::Declaration:
 6040   case TemplateArgument::NullPtr:
 6043   case TemplateArgument::Integral:
 6047   case TemplateArgument::Template:
 6050   case TemplateArgument::TemplateExpansion:
 6057   case TemplateArgument::Expression:
 6060   case TemplateArgument::Pack:
 6062     for (const auto &P : Arg.pack_elements())
tools/clang/lib/Serialization/ASTWriterStmt.cpp
  394   ArrayRef<TemplateArgument> TemplateArgs = E->getTemplateArguments();
  402   for (const TemplateArgument &Arg : TemplateArgs)
 1799     for (const auto &TA : E->getPartialArguments())
tools/clang/tools/extra/clang-tidy/boost/UseToStringCheck.cpp
   46       Result.Nodes.getNodeAs<TemplateArgument>("char_type")->getAsType();
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProBoundsConstantArrayIndexCheck.cpp
  123   const auto &SizeArg = TemplateArgs[1];
  124   if (SizeArg.getKind() != TemplateArgument::Integral)
tools/clang/tools/extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp
   50   auto DeleterArgument = Class->getTemplateArgs()[1];
   51   if (DeleterArgument.getKind() != TemplateArgument::Type)
tools/clang/tools/extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
   27   ArrayRef<TemplateArgument> TemplateArgs =
   31   for (const auto &Arg : TemplateArgs) {
  130   if (const auto *Used = Result.Nodes.getNodeAs<TemplateArgument>("used")) {
  130   if (const auto *Used = Result.Nodes.getNodeAs<TemplateArgument>("used")) {
  131     if (Used->getKind() == TemplateArgument::Template) {
  134     } else if (Used->getKind() == TemplateArgument::Type) {
  137     } else if (Used->getKind() == TemplateArgument::Declaration) {
tools/clang/tools/extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp
   92   const auto *Functor = Result.Nodes.getNodeAs<TemplateArgument>("Functor");
   92   const auto *Functor = Result.Nodes.getNodeAs<TemplateArgument>("Functor");
  104     const TemplateArgument &Arg = FunctorParentType->getArg(ArgNum);
  105     if (Arg.getKind() != TemplateArgument::Type)
tools/clang/tools/extra/clangd/FindTarget.cpp
  612     case TemplateArgument::Template:
  613     case TemplateArgument::TemplateExpansion:
  622     case TemplateArgument::Declaration:
  624     case TemplateArgument::Integral:
  625     case TemplateArgument::Null:
  626     case TemplateArgument::NullPtr:
  628     case TemplateArgument::Pack:
  629     case TemplateArgument::Type:
  630     case TemplateArgument::Expression:
tools/clang/tools/extra/clangd/unittests/ParsedASTTests.cpp
   59       for (const auto Arg : Args->asArray()) {
tools/clang/tools/extra/modularize/Modularize.cpp
  562   bool TraverseTemplateArgument(const TemplateArgument &Arg) { return true; }
  566   bool TraverseTemplateArguments(const TemplateArgument *Args,
  753   bool TraverseTemplateArgument(const TemplateArgument &Arg) { return true; }
  757   bool TraverseTemplateArguments(const TemplateArgument *Args,
tools/clang/tools/libclang/CIndex.cpp
 1464   case TemplateArgument::Null:
 1465   case TemplateArgument::Integral:
 1466   case TemplateArgument::Pack:
 1469   case TemplateArgument::Type:
 1474   case TemplateArgument::Declaration:
 1479   case TemplateArgument::NullPtr:
 1484   case TemplateArgument::Expression:
 1489   case TemplateArgument::Template:
 1490   case TemplateArgument::TemplateExpansion:
tools/clang/tools/libclang/CXCursor.cpp
 1268     CXCursor C, unsigned I, TemplateArgument *TA) {
 1295   TemplateArgument TA;
 1301     case TemplateArgument::Null: return CXTemplateArgumentKind_Null;
 1302     case TemplateArgument::Type: return CXTemplateArgumentKind_Type;
 1303     case TemplateArgument::Declaration:
 1305     case TemplateArgument::NullPtr: return CXTemplateArgumentKind_NullPtr;
 1306     case TemplateArgument::Integral: return CXTemplateArgumentKind_Integral;
 1307     case TemplateArgument::Template: return CXTemplateArgumentKind_Template;
 1308     case TemplateArgument::TemplateExpansion:
 1310     case TemplateArgument::Expression: return CXTemplateArgumentKind_Expression;
 1311     case TemplateArgument::Pack: return CXTemplateArgumentKind_Pack;
 1318   TemplateArgument TA;
 1324   if (TA.getKind() != TemplateArgument::Type) {
 1332   TemplateArgument TA;
 1339   if (TA.getKind() != TemplateArgument::Integral) {
 1349   TemplateArgument TA;
 1356   if (TA.getKind() != TemplateArgument::Integral) {
tools/clang/tools/libclang/CXType.cpp
  176 static Optional<ArrayRef<TemplateArgument>>
  192 static Optional<QualType> TemplateArgumentToQualType(const TemplateArgument &A) {
  193   if (A.getKind() == TemplateArgument::Type)
  199 FindTemplateArgumentTypeAt(ArrayRef<TemplateArgument> TA, unsigned index) {
  201   for (const auto &A : TA) {
  202     if (A.getKind() == TemplateArgument::Pack) {
 1124 static unsigned GetTemplateArgumentArraySize(ArrayRef<TemplateArgument> TA) {
 1126   for (const auto &Arg : TA)
 1127     if (Arg.getKind() == TemplateArgument::Pack)
tools/clang/unittests/AST/ASTTraverserTest.cpp
   58   void Visit(const TemplateArgument &A, SourceRange R = {},
   63   template <typename... T> void Visit(T...) {}
   75 template <typename... NodeType> std::string dumpASTString(NodeType &&... N) {
   83   Dumper.Visit(std::forward<NodeType &&>(N)...);
   97   static void withDynNode(T Node, const std::string &DumpString) {
  111 void verifyWithDynNode(T Node, const std::string &DumpString) {
  114   Verifier<T>::withDynNode(Node, DumpString);
  219   TemplateArgument TA = Templ->getTemplateArgs()[0];
tools/clang/unittests/AST/ASTTypeTraitsTest.cpp
   25   return ASTNodeKind::getFromNodeKind<T>();
tools/clang/unittests/Tooling/RecursiveASTVisitorTests/TemplateArgumentLocTraverser.cpp
   21     const TemplateArgument &Arg = ArgLoc.getArgument();
tools/lldb/include/lldb/Symbol/ClangASTContext.h
  278     llvm::SmallVector<clang::TemplateArgument, 2> args;
tools/lldb/source/Symbol/ClangASTContext.cpp
 1423   bool IsValueParam(const clang::TemplateArgument &argument) {
 1424     return argument.getKind() == TemplateArgument::Integral;
 1613   llvm::SmallVector<clang::TemplateArgument, 2> args(
 1619     args[args.size() - 1] = TemplateArgument::CreatePackCopy(
 7751   case clang::TemplateArgument::Null:
 7754   case clang::TemplateArgument::NullPtr:
 7757   case clang::TemplateArgument::Type:
 7760   case clang::TemplateArgument::Declaration:
 7763   case clang::TemplateArgument::Integral:
 7766   case clang::TemplateArgument::Template:
 7769   case clang::TemplateArgument::TemplateExpansion:
 7772   case clang::TemplateArgument::Expression:
 7775   case clang::TemplateArgument::Pack:
 7789   const clang::TemplateArgument &template_arg =
 7791   if (template_arg.getKind() != clang::TemplateArgument::Type)
 7805   const clang::TemplateArgument &template_arg =
 7807   if (template_arg.getKind() != clang::TemplateArgument::Integral)
tools/lldb/source/Symbol/CxxModuleHandler.cpp
  154 static bool templateArgsAreSupported(ArrayRef<TemplateArgument> a) {
  155   for (const TemplateArgument &arg : a) {
  157     case TemplateArgument::Type:
  158     case TemplateArgument::Integral:
  224   llvm::SmallVector<TemplateArgument, 4> imported_args;
  227   for (const TemplateArgument &arg : foreign_args.asArray()) {
  229     case TemplateArgument::Type: {
  238     case TemplateArgument::Integral: {
usr/include/c++/7.4.0/bits/alloc_traits.h
  387       using allocator_type = allocator<_Tp>;
  389       using value_type = _Tp;
  392       using pointer = _Tp*;
  395       using const_pointer = const _Tp*;
usr/include/c++/7.4.0/bits/allocator.h
  108     class allocator: public __allocator_base<_Tp>
  113       typedef _Tp*       pointer;
  114       typedef const _Tp* const_pointer;
  115       typedef _Tp&       reference;
  116       typedef const _Tp& const_reference;
  117       typedef _Tp        value_type;
  137 	allocator(const allocator<_Tp1>&) throw() { }
usr/include/c++/7.4.0/bits/move.h
   46     inline _GLIBCXX_CONSTEXPR _Tp*
   47     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
   72     constexpr _Tp&&
   73     forward(typename std::remove_reference<_Tp>::type& __t) noexcept
   83     constexpr _Tp&&
   84     forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
   98     move(_Tp&& __t) noexcept
usr/include/c++/7.4.0/bits/stl_construct.h
   74     _Construct(_T1* __p, _Args&&... __args)
   74     _Construct(_T1* __p, _Args&&... __args)
   75     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
   75     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
usr/include/c++/7.4.0/bits/stl_iterator_base_types.h
  181       typedef _Tp                         value_type;
  183       typedef _Tp*                        pointer;
  184       typedef _Tp&                        reference;
  192       typedef _Tp                         value_type;
  194       typedef const _Tp*                  pointer;
  195       typedef const _Tp&                  reference;
usr/include/c++/7.4.0/bits/stl_uninitialized.h
  144 		      const _Tp& __x)
  182 		       const _Tp& __x)
usr/include/c++/7.4.0/bits/stl_vector.h
   77 	rebind<_Tp>::other _Tp_alloc_type;
  216     class vector : protected _Vector_base<_Tp, _Alloc>
  227       typedef _Vector_base<_Tp, _Alloc>			_Base;
  232       typedef _Tp					value_type;
  919       _Tp*
  923       const _Tp*
usr/include/c++/7.4.0/ext/alloc_traits.h
  117       { typedef typename _Base_type::template rebind_alloc<_Tp> other; };
usr/include/c++/7.4.0/ext/new_allocator.h
   63       typedef _Tp*       pointer;
   64       typedef const _Tp* const_pointer;
   65       typedef _Tp&       reference;
   66       typedef const _Tp& const_reference;
   67       typedef _Tp        value_type;
usr/include/c++/7.4.0/initializer_list
   50       typedef _E 		value_type;
   51       typedef const _E& 	reference;
   52       typedef const _E& 	const_reference;
   54       typedef const _E* 	iterator;
   55       typedef const _E* 	const_iterator;
usr/include/c++/7.4.0/type_traits
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  326     : public __is_integral_helper<typename remove_cv<_Tp>::type>::type
  354     : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
  381     : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
  567     : public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  631     : public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  762     typename add_rvalue_reference<_Tp>::type declval() noexcept;
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  798       typedef decltype(__test<_Tp>(0)) type;
  811                remove_all_extents<_Tp>::type>::type
  825     : public __is_destructible_safe<_Tp>::type
  984       typedef decltype(__test<_Tp, _Arg>(0)) type;
  989     : public __and_<is_destructible<_Tp>,
  990                     __is_direct_constructible_impl<_Tp, _Arg>>
 1072 			 __is_direct_constructible_ref_cast<_Tp, _Arg>,
 1073 			 __is_direct_constructible_new_safe<_Tp, _Arg>
 1079     : public __is_direct_constructible_new<_Tp, _Arg>::type
 1119     : public __is_direct_constructible<_Tp, _Arg>
 1130     : public __is_constructible_impl<_Tp, _Args...>::type
 1142     : public is_constructible<_Tp, const _Tp&>
 1142     : public is_constructible<_Tp, const _Tp&>
 1148     : public __is_copy_constructible_impl<_Tp>
 1160     : public is_constructible<_Tp, _Tp&&>
 1160     : public is_constructible<_Tp, _Tp&&>
 1166     : public __is_move_constructible_impl<_Tp>
 1286     : public is_assignable<_Tp&, const _Tp&>
 1286     : public is_assignable<_Tp&, const _Tp&>
 1292     : public __is_copy_assignable_impl<_Tp>
 1526 	static void __test_aux(_To1);
 1538       typedef decltype(__test<_From, _To>(0)) type;
 1538       typedef decltype(__test<_From, _To>(0)) type;
 1545     : public __is_convertible_helper<_From, _To>::type
 1545     : public __is_convertible_helper<_From, _To>::type
 1554     { typedef _Tp     type; };
 1558     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1580     { typedef _Tp const     type; };
 1629     { typedef _Tp   type; };
 1633     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1664     : public __add_rvalue_reference_helper<_Tp>
 1955     { typedef _Tp     type; };
 2171     { typedef _Iffalse type; };