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

Declarations

tools/clang/lib/AST/Interp/Block.h
   30 class Pointer;
tools/clang/lib/AST/Interp/Pointer.h
   31 class Pointer;

References

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 *;
  179 class SmallVectorTemplateBase : public SmallVectorTemplateCommon<T> {
  183   static void destroy_range(T *S, T *E) {
  183   static void destroy_range(T *S, T *E) {
  211   void push_back(const T &Elt) {
  214     ::new ((void*) this->end()) T(Elt);
  218   void push_back(T &&Elt) {
  240   T *NewElts = static_cast<T*>(llvm::safe_malloc(NewCapacity*sizeof(T)));
  240   T *NewElts = static_cast<T*>(llvm::safe_malloc(NewCapacity*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() {
  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) {
  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
   30   T t;
   39 template <typename T> union SizerImpl<T> { char arr[sizeof(T)]; };
   50       llvm::detail::SizerImpl<T, Ts...>)];
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/lib/AST/Interp/Block.cpp
   21 void Block::addPointer(Pointer *P) {
   31 void Block::removePointer(Pointer *P) {
   47 void Block::movePointer(Pointer *From, Pointer *To) {
   47 void Block::movePointer(Pointer *From, Pointer *To) {
   75   for (Pointer *P = Blk->Pointers; P; P = P->Next)
tools/clang/lib/AST/Interp/Block.h
   68   T &deref() { return *reinterpret_cast<T *>(data()); }
   90   void addPointer(Pointer *P);
   91   void removePointer(Pointer *P);
   92   void movePointer(Pointer *From, Pointer *To);
   92   void movePointer(Pointer *From, Pointer *To);
   95   Pointer *Pointers = nullptr;
tools/clang/lib/AST/Interp/Descriptor.cpp
   19   new (Ptr) T();
   28   auto *SrcPtr = reinterpret_cast<T *>(Src);
   29   auto *DstPtr = reinterpret_cast<T *>(Dst);
   30   new (DstPtr) T(std::move(*SrcPtr));
   36     new (&reinterpret_cast<T *>(Ptr)[I]) T();
   50     auto *SrcPtr = &reinterpret_cast<T *>(Src)[I];
   51     auto *DstPtr = &reinterpret_cast<T *>(Dst)[I];
   52     new (DstPtr) T(std::move(*SrcPtr));
tools/clang/lib/AST/Interp/EvalEmitter.cpp
  109   std::function<bool(QualType, const Pointer &, APValue &)> Composite;
  123           const Pointer &FP = Ptr.atField(F.Offset);
  145           const Pointer &FP = Ptr.atField(FD->Offset);
  158           const Pointer &BP = Ptr.atField(BD->Offset);
  165           const Pointer &VP = Ptr.atField(VD->Offset);
  179         const Pointer &EP = Ptr.atIndex(I);
  192   const auto &Ptr = S.Stk.pop<Pointer>();
  192   const auto &Ptr = S.Stk.pop<Pointer>();
  202   S.Stk.push<Pointer>(reinterpret_cast<Block *>(It->second.get()));
tools/clang/lib/AST/Interp/EvalEmitter.h
  116   bool ExecuteCall(Function *F, Pointer &&This, const SourceInfo &Info);
tools/clang/lib/AST/Interp/Interp.cpp
   36   const T &Ret = S.Stk.pop<T>();
   36   const T &Ret = S.Stk.pop<T>();
   46     S.Stk.push<T>(Ret);
   50     if (!ReturnValue<T>(Ret, Result))
  101 static bool CheckInitialized(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  112 static bool CheckActive(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  121   Pointer U = Ptr.getBase();
  131     const Pointer &Field = U.atField(R->getField(I)->Offset);
  144 static bool CheckTemporary(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  164 static bool CheckGlobal(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  181 bool CheckExtern(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  194 bool CheckArray(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  202 bool CheckLive(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  231 bool CheckNull(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  240 bool CheckRange(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  249 bool CheckRange(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
  258 bool CheckConst(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  270 bool CheckMutable(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  283 bool CheckLoad(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  301 bool CheckStore(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  315 bool CheckInvoke(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  325 bool CheckInit(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
  375 bool CheckThis(InterpState &S, CodePtr OpPC, const Pointer &This) {
tools/clang/lib/AST/Interp/Interp.h
   41 template <typename T> bool ReturnValue(const T &V, APValue &R) {
   47 bool CheckExtern(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   50 bool CheckArray(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   53 bool CheckLive(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
   56 bool CheckNull(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
   60 bool CheckRange(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
   64 bool CheckRange(InterpState &S, CodePtr OpPC, const Pointer &Ptr,
   68 bool CheckConst(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   71 bool CheckMutable(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   74 bool CheckLoad(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   77 bool CheckStore(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   80 bool CheckInvoke(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   83 bool CheckInit(InterpState &S, CodePtr OpPC, const Pointer &Ptr);
   89 bool CheckThis(InterpState &S, CodePtr OpPC, const Pointer &This);
  176 inline bool CmpHelper<Pointer>(InterpState &S, CodePtr OpPC, CompareFn Fn) {
  178   const Pointer &RHS = S.Stk.pop<Pointer>();
  178   const Pointer &RHS = S.Stk.pop<Pointer>();
  179   const Pointer &LHS = S.Stk.pop<Pointer>();
  179   const Pointer &LHS = S.Stk.pop<Pointer>();
  181   if (!Pointer::hasSameBase(LHS, RHS)) {
  194 inline bool CmpHelperEQ<Pointer>(InterpState &S, CodePtr OpPC, CompareFn Fn) {
  196   const Pointer &RHS = S.Stk.pop<Pointer>();
  196   const Pointer &RHS = S.Stk.pop<Pointer>();
  197   const Pointer &LHS = S.Stk.pop<Pointer>();
  197   const Pointer &LHS = S.Stk.pop<Pointer>();
  207   if (!Pointer::hasSameBase(LHS, RHS)) {
  220   return CmpHelperEQ<T>(S, OpPC, [](ComparisonCategoryResult R) {
  227   return CmpHelperEQ<T>(S, OpPC, [](ComparisonCategoryResult R) {
  234   return CmpHelper<T>(S, OpPC, [](ComparisonCategoryResult R) {
  241   return CmpHelper<T>(S, OpPC, [](ComparisonCategoryResult R) {
  249   return CmpHelper<T>(S, OpPC, [](ComparisonCategoryResult R) {
  256   return CmpHelper<T>(S, OpPC, [](ComparisonCategoryResult R) {
  282   S.Stk.push<T>(S.Stk.peek<T>());
  282   S.Stk.push<T>(S.Stk.peek<T>());
  288   S.Stk.pop<T>();
  308   S.Stk.push<T>(S.Current->getLocal<T>(I));
  308   S.Stk.push<T>(S.Current->getLocal<T>(I));
  314   S.Current->setLocal<T>(I, S.Stk.pop<T>());
  314   S.Current->setLocal<T>(I, S.Stk.pop<T>());
  323   S.Stk.push<T>(S.Current->getParam<T>(I));
  323   S.Stk.push<T>(S.Current->getParam<T>(I));
  329   S.Current->setParam<T>(I, S.Stk.pop<T>());
  329   S.Current->setParam<T>(I, S.Stk.pop<T>());
  335   const Pointer &Obj = S.Stk.peek<Pointer>();
  335   const Pointer &Obj = S.Stk.peek<Pointer>();
  340   const Pointer &Field = Obj.atField(I);
  343   S.Stk.push<T>(Field.deref<T>());
  343   S.Stk.push<T>(Field.deref<T>());
  349   const T &Value = S.Stk.pop<T>();
  349   const T &Value = S.Stk.pop<T>();
  350   const Pointer &Obj = S.Stk.peek<Pointer>();
  350   const Pointer &Obj = S.Stk.peek<Pointer>();
  355   const Pointer &Field = Obj.atField(I);
  358   Field.deref<T>() = Value;
  364   const Pointer &Obj = S.Stk.pop<Pointer>();
  364   const Pointer &Obj = S.Stk.pop<Pointer>();
  369   const Pointer &Field = Obj.atField(I);
  372   S.Stk.push<T>(Field.deref<T>());
  372   S.Stk.push<T>(Field.deref<T>());
  380   const Pointer &This = S.Current->getThis();
  383   const Pointer &Field = This.atField(I);
  386   S.Stk.push<T>(Field.deref<T>());
  386   S.Stk.push<T>(Field.deref<T>());
  394   const T &Value = S.Stk.pop<T>();
  394   const T &Value = S.Stk.pop<T>();
  395   const Pointer &This = S.Current->getThis();
  398   const Pointer &Field = This.atField(I);
  401   Field.deref<T>() = Value;
  410   S.Stk.push<T>(B->deref<T>());
  410   S.Stk.push<T>(B->deref<T>());
  422   S.P.getGlobal(I)->deref<T>() = S.Stk.pop<T>();
  422   S.P.getGlobal(I)->deref<T>() = S.Stk.pop<T>();
  430   const Pointer &This = S.Current->getThis();
  433   const Pointer &Field = This.atField(I);
  434   Field.deref<T>() = S.Stk.pop<T>();
  434   Field.deref<T>() = S.Stk.pop<T>();
  443   const Pointer &This = S.Current->getThis();
  446   const Pointer &Field = This.atField(F->Offset);
  457   const Pointer &This = S.Current->getThis();
  460   const Pointer &Field = This.atField(I);
  461   Field.deref<T>() = S.Stk.pop<T>();
  461   Field.deref<T>() = S.Stk.pop<T>();
  469   const T &Value = S.Stk.pop<T>();
  469   const T &Value = S.Stk.pop<T>();
  470   const Pointer &Field = S.Stk.pop<Pointer>().atField(I);
  470   const Pointer &Field = S.Stk.pop<Pointer>().atField(I);
  471   Field.deref<T>() = Value;
  480   const Pointer &Field = S.Stk.pop<Pointer>().atField(F->Offset);
  480   const Pointer &Field = S.Stk.pop<Pointer>().atField(F->Offset);
  489   const T &Value = S.Stk.pop<T>();
  489   const T &Value = S.Stk.pop<T>();
  490   const Pointer &Ptr = S.Stk.pop<Pointer>();
  490   const Pointer &Ptr = S.Stk.pop<Pointer>();
  491   const Pointer &Field = Ptr.atField(I);
  492   Field.deref<T>() = Value;
  503   S.Stk.push<Pointer>(S.Current->getLocalPointer(I));
  511   S.Stk.push<Pointer>(S.Current->getParamPointer(I));
  516   S.Stk.push<Pointer>(S.P.getPtrGlobal(I));
  521   const Pointer &Ptr = S.Stk.pop<Pointer>();
  521   const Pointer &Ptr = S.Stk.pop<Pointer>();
  528   S.Stk.push<Pointer>(Ptr.atField(Off));
  535   const Pointer &This = S.Current->getThis();
  538   S.Stk.push<Pointer>(This.atField(Off));
  543   const Pointer &Ptr = S.Stk.pop<Pointer>();
  543   const Pointer &Ptr = S.Stk.pop<Pointer>();
  548   Pointer Field = Ptr.atField(Off);
  551   S.Stk.push<Pointer>(std::move(Field));
  558   const Pointer &This = S.Current->getThis();
  561   Pointer Field = This.atField(Off);
  564   S.Stk.push<Pointer>(std::move(Field));
  569   const Pointer &Ptr = S.Stk.pop<Pointer>();
  569   const Pointer &Ptr = S.Stk.pop<Pointer>();
  572   S.Stk.push<Pointer>(Ptr.atField(Off));
  579   const Pointer &This = S.Current->getThis();
  582   S.Stk.push<Pointer>(This.atField(Off));
  587                            const Pointer &Ptr) {
  588   Pointer Base = Ptr;
  593   S.Stk.push<Pointer>(Base.atField(Field->Offset));
  598   const Pointer &Ptr = S.Stk.pop<Pointer>();
  598   const Pointer &Ptr = S.Stk.pop<Pointer>();
  608   const Pointer &This = S.Current->getThis();
  620   const Pointer &Ptr = S.Stk.peek<Pointer>();
  620   const Pointer &Ptr = S.Stk.peek<Pointer>();
  623   S.Stk.push<T>(Ptr.deref<T>());
  623   S.Stk.push<T>(Ptr.deref<T>());
  629   const Pointer &Ptr = S.Stk.pop<Pointer>();
  629   const Pointer &Ptr = S.Stk.pop<Pointer>();
  632   S.Stk.push<T>(Ptr.deref<T>());
  632   S.Stk.push<T>(Ptr.deref<T>());
  638   const T &Value = S.Stk.pop<T>();
  638   const T &Value = S.Stk.pop<T>();
  639   const Pointer &Ptr = S.Stk.peek<Pointer>();
  639   const Pointer &Ptr = S.Stk.peek<Pointer>();
  642   Ptr.deref<T>() = Value;
  648   const T &Value = S.Stk.pop<T>();
  648   const T &Value = S.Stk.pop<T>();
  649   const Pointer &Ptr = S.Stk.pop<Pointer>();
  649   const Pointer &Ptr = S.Stk.pop<Pointer>();
  652   Ptr.deref<T>() = Value;
  659   const Pointer &Ptr = S.Stk.peek<Pointer>();
  659   const Pointer &Ptr = S.Stk.peek<Pointer>();
  673   const Pointer &Ptr = S.Stk.pop<Pointer>();
  673   const Pointer &Ptr = S.Stk.pop<Pointer>();
  686   const T &Value = S.Stk.pop<T>();
  686   const T &Value = S.Stk.pop<T>();
  687   const Pointer &Ptr = S.Stk.pop<Pointer>();
  687   const Pointer &Ptr = S.Stk.pop<Pointer>();
  691   new (&Ptr.deref<T>()) T(Value);
  691   new (&Ptr.deref<T>()) T(Value);
  697   const T &Value = S.Stk.pop<T>();
  697   const T &Value = S.Stk.pop<T>();
  698   const Pointer &Ptr = S.Stk.peek<Pointer>().atIndex(Idx);
  698   const Pointer &Ptr = S.Stk.peek<Pointer>().atIndex(Idx);
  702   new (&Ptr.deref<T>()) T(Value);
  702   new (&Ptr.deref<T>()) T(Value);
  708   const T &Value = S.Stk.pop<T>();
  708   const T &Value = S.Stk.pop<T>();
  709   const Pointer &Ptr = S.Stk.pop<Pointer>().atIndex(Idx);
  709   const Pointer &Ptr = S.Stk.pop<Pointer>().atIndex(Idx);
  713   new (&Ptr.deref<T>()) T(Value);
  713   new (&Ptr.deref<T>()) T(Value);
  724   const Pointer &Ptr = S.Stk.pop<Pointer>();
  724   const Pointer &Ptr = S.Stk.pop<Pointer>();
  735     S.Stk.push<Pointer>(Index.isZero() ? Ptr.atIndex(0) : Ptr);
  775   S.Stk.push<Pointer>(Ptr.atIndex(static_cast<unsigned>(Result)));
  822   S.Stk.push<T>();
  836   const Pointer &This = S.Current->getThis();
  840   S.Stk.push<Pointer>(This);
  943   const Pointer &Ptr = S.Stk.pop<Pointer>();
  943   const Pointer &Ptr = S.Stk.pop<Pointer>();
  944   S.Stk.push<Pointer>(Ptr.narrow());
  949   const Pointer &Ptr = S.Stk.pop<Pointer>();
  949   const Pointer &Ptr = S.Stk.pop<Pointer>();
  950   S.Stk.push<Pointer>(Ptr.expand());
tools/clang/lib/AST/Interp/InterpFrame.cpp
   21                          CodePtr RetPC, Pointer &&This)
   62 void print(llvm::raw_ostream &OS, const Pointer &P, ASTContext &Ctx,
   91   llvm::SmallVector<Pointer, 2> Levels;
   92   for (Pointer F = P; !F.isRoot(); ) {
  155 Pointer InterpFrame::getLocalPointer(unsigned Offset) {
  161 Pointer InterpFrame::getParamPointer(unsigned Off) {
tools/clang/lib/AST/Interp/InterpFrame.h
   36               CodePtr RetPC, Pointer &&This);
   66   template <typename T> const T &getLocal(unsigned Offset) {
   67     return localRef<T>(Offset);
   71   template <typename T> void setLocal(unsigned Offset, const T &Value) {
   72     localRef<T>(Offset) = Value;
   76   Pointer getLocalPointer(unsigned Offset);
   79   template <typename T> const T &getParam(unsigned Offset) {
   82       return stackRef<T>(Offset);
   84       return Pointer(reinterpret_cast<Block *>(Pt->second.get())).deref<T>();
   89   template <typename T> void setParam(unsigned Offset, const T &Value) {
   90      getParamPointer(Offset).deref<T>() = Value;
   94   Pointer getParamPointer(unsigned Offset);
   97   const Pointer &getThis() const { return This; }
  115   template <typename T> const T &stackRef(unsigned Offset) {
  120   template <typename T> T &localRef(unsigned Offset) {
  135   Pointer This;
tools/clang/lib/AST/Interp/InterpStack.h
   30   template <typename T, typename... Tys> void push(Tys &&... Args) {
   31     new (grow(aligned_size<T>())) T(std::forward<Tys>(Args)...);
   31     new (grow(aligned_size<T>())) T(std::forward<Tys>(Args)...);
   31     new (grow(aligned_size<T>())) T(std::forward<Tys>(Args)...);
   35   template <typename T> T pop() {
   36     auto *Ptr = &peek<T>();
   36     auto *Ptr = &peek<T>();
   37     auto Value = std::move(*Ptr);
   39     shrink(aligned_size<T>());
   45     auto *Ptr = &peek<T>();
   45     auto *Ptr = &peek<T>();
   47     shrink(aligned_size<T>());
   51   template <typename T> T &peek() {
   52     return *reinterpret_cast<T *>(peek(aligned_size<T>()));
   69     return ((sizeof(T) + PtrAlign - 1) / PtrAlign) * PtrAlign;
tools/clang/lib/AST/Interp/Pointer.cpp
   19 Pointer::Pointer(const Pointer &P) : Pointer(P.Pointee, P.Base, P.Offset) {}
   21 Pointer::Pointer(Pointer &&P)
   41 void Pointer::operator=(const Pointer &P) {
   58 void Pointer::operator=(Pointer &&P) {
  108       Pointer Ptr = *this;
  187 bool Pointer::hasSameBase(const Pointer &A, const Pointer &B) {
  187 bool Pointer::hasSameBase(const Pointer &A, const Pointer &B) {
  191 bool Pointer::hasSameArray(const Pointer &A, const Pointer &B) {
  191 bool Pointer::hasSameArray(const Pointer &A, const Pointer &B) {
tools/clang/lib/AST/Interp/Pointer.h
   47   Pointer(const Pointer &P);
   48   Pointer(Pointer &&P);
   51   void operator=(const Pointer &P);
   52   void operator=(Pointer &&P);
   58   Pointer atIndex(unsigned Idx) const {
   70   Pointer atField(unsigned Off) const {
   76   Pointer narrow() const {
  112   Pointer expand() const {
  151   Pointer getBase() const {
  161   Pointer getArray() const {
  280   template <typename T> T &deref() const {
  298   static bool hasSameBase(const Pointer &A, const Pointer &B);
  298   static bool hasSameBase(const Pointer &A, const Pointer &B);
  300   static bool hasSameArray(const Pointer &A, const Pointer &B);
  300   static bool hasSameArray(const Pointer &A, const Pointer &B);
  340   Pointer *Prev = nullptr;
  342   Pointer *Next = nullptr;
  345 inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const Pointer &P) {
tools/clang/lib/AST/Interp/PrimType.h
   51 template <> struct PrimConv<PT_Ptr> { using T = Pointer; };
tools/clang/lib/AST/Interp/Program.cpp
   55   const Pointer Ptr(G->block());
   57     Pointer Field = Ptr.atIndex(I).narrow();
   82 Pointer Program::getPtrGlobal(unsigned Idx) {
tools/clang/lib/AST/Interp/Program.h
   51   Pointer getPtrGlobal(unsigned Idx);
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/std_function.h
  299       _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
  628       using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
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)...); }
   97     _Destroy(_Tp* __pointer)
usr/include/c++/7.4.0/bits/stl_iterator_base_types.h
  123       typedef _Tp        value_type;
  181       typedef _Tp                         value_type;
  183       typedef _Tp*                        pointer;
  184       typedef _Tp&                        reference;
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
  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>
 1554     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1629     { typedef _Tp   type; };
 1633     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1955     { typedef _Tp     type; };