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

Derived Classes

tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
  349 class SymbolVal : public NonLoc {
  379 class ConcreteInt : public NonLoc {
  410 class LocAsInteger : public NonLoc {
  457 class CompoundVal : public NonLoc {
  486 class LazyCompoundVal : public NonLoc {
  524 class PointerToMember : public NonLoc {

References

include/llvm/ADT/Optional.h
  144     T value;
  160   explicit OptionalStorage(in_place_t, Args &&... args)
  161       : value(std::forward<Args>(args)...), hasVal(true) {}
  172   T &getValue() LLVM_LVALUE_FUNCTION noexcept {
  176   T const &getValue() const LLVM_LVALUE_FUNCTION noexcept {
  181   T &&getValue() && noexcept {
  216   optional_detail::OptionalStorage<T> Storage;
  219   using value_type = T;
  224   Optional(const T &y) : Storage(optional_detail::in_place_t{}, y) {}
  227   Optional(T &&y) : Storage(optional_detail::in_place_t{}, std::move(y)) {}
  230   Optional &operator=(T &&y) {
  241   static inline Optional create(const T *y) {
  245   Optional &operator=(const T &y) {
  253   const T *getPointer() const { return &Storage.getValue(); }
  254   T *getPointer() { return &Storage.getValue(); }
  255   const T &getValue() const LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  256   T &getValue() LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  260   const T *operator->() const { return getPointer(); }
  261   T *operator->() { return getPointer(); }
  262   const T &operator*() const LLVM_LVALUE_FUNCTION { return getValue(); }
  263   T &operator*() LLVM_LVALUE_FUNCTION { return getValue(); }
  266   constexpr T getValueOr(U &&value) const LLVM_LVALUE_FUNCTION {
  271   T &&getValue() && { return std::move(Storage.getValue()); }
  272   T &&operator*() && { return std::move(Storage.getValue()); }
  275   T getValueOr(U &&value) && {
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/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
  121                                                NonLoc Value,
  127                                                     NonLoc Value,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
  560     return X.isValid() ? svalBuilder.evalMinus(X.castAs<NonLoc>()) : X;
  564     return X.isValid() ? svalBuilder.evalComplement(X.castAs<NonLoc>()) : X;
  585                  NonLoc L, NonLoc R, QualType T) {
  585                  NonLoc L, NonLoc R, QualType T) {
  590                  NonLoc L, SVal R, QualType T) {
  592                                                  R.castAs<NonLoc>(), T) : R;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
 1087   NonLoc Index;
 1089   ElementRegion(QualType elementType, NonLoc Idx, const SubRegion *sReg)
 1103   NonLoc getIndex() const { return Index; }
 1333   const ElementRegion *getElementRegion(QualType elementType, NonLoc Idx,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
  685       this, Val.castAs<NonLoc>(), From, To, Assumption);
  698       this, Val.castAs<NonLoc>(), From, To);
  752   if (Optional<NonLoc> N = Idx.getAs<NonLoc>())
  752   if (Optional<NonLoc> N = Idx.getAs<NonLoc>())
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
   75   virtual SVal evalCastFromNonLoc(NonLoc val, QualType castTy) = 0;
  111   virtual SVal evalMinus(NonLoc val) = 0;
  113   virtual SVal evalComplement(NonLoc val) = 0;
  118                            NonLoc lhs, NonLoc rhs, QualType resultTy) = 0;
  118                            NonLoc lhs, NonLoc rhs, QualType resultTy) = 0;
  129                            Loc lhs, NonLoc rhs, QualType resultTy) = 0;
  142                         NonLoc lhs, NonLoc rhs, QualType resultTy);
  142                         NonLoc lhs, NonLoc rhs, QualType resultTy);
  250   NonLoc makeCompoundVal(QualType type, llvm::ImmutableList<SVal> vals) {
  254   NonLoc makeLazyCompoundVal(const StoreRef &store,
  260   NonLoc makePointerToMember(const DeclaratorDecl *DD) {
  264   NonLoc makePointerToMember(const PointerToMemberData *PTMD) {
  268   NonLoc makeZeroArrayIndex() {
  272   NonLoc makeArrayIndex(uint64_t idx) {
  298   NonLoc makeIntVal(const llvm::APInt& integer, bool isUnsigned) {
  309   NonLoc makeIntVal(uint64_t integer, bool isUnsigned) {
  313   NonLoc makeIntValWithPtrWidth(uint64_t integer, bool isUnsigned) {
  318   NonLoc makeLocAsInteger(Loc loc, unsigned bits) {
  322   NonLoc makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op,
  325   NonLoc makeNonLoc(const llvm::APSInt& rhs, BinaryOperator::Opcode op,
  328   NonLoc makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op,
  332   NonLoc makeNonLoc(const SymExpr *operand, QualType fromTy, QualType toTy);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
  103   T castAs() const {
  111   Optional<T> getAs() const {
  112     if (!T::isKind(*this))
  349 class SymbolVal : public NonLoc {
  373   static bool isKind(const NonLoc& V) {
  379 class ConcreteInt : public NonLoc {
  405   static bool isKind(const NonLoc& V) {
  410 class LocAsInteger : public NonLoc {
  452   static bool isKind(const NonLoc& V) {
  457 class CompoundVal : public NonLoc {
  481   static bool isKind(const NonLoc& V) {
  486 class LazyCompoundVal : public NonLoc {
  510   static bool isKind(const NonLoc& V) {
  524 class PointerToMember : public NonLoc {
  561   static bool isKind(const NonLoc& V) {
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h
   42   ProgramStateRef assumeInclusiveRange(ProgramStateRef State, NonLoc Value,
   82   ProgramStateRef assume(ProgramStateRef State, NonLoc Cond, bool Assumption);
   84   ProgramStateRef assumeAux(ProgramStateRef State, NonLoc Cond,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
  149   virtual SVal getLValueElement(QualType elementType, NonLoc offset, SVal Base);
tools/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp
   58   NonLoc getByteOffset() const { return byteOffset.castAs<NonLoc>(); }
   58   NonLoc getByteOffset() const { return byteOffset.castAs<NonLoc>(); }
   83 static std::pair<NonLoc, nonloc::ConcreteInt>
   84 getSimplifiedOffsets(NonLoc offset, nonloc::ConcreteInt extent,
  137   NonLoc rawOffsetVal = rawOffset.getByteOffset();
  145   if (Optional<NonLoc> NV = extentBegin.getAs<NonLoc>()) {
  145   if (Optional<NonLoc> NV = extentBegin.getAs<NonLoc>()) {
  147       std::pair<NonLoc, nonloc::ConcreteInt> simplifiedOffsets =
  158     Optional<NonLoc> lowerBoundToCheck = lowerBound.getAs<NonLoc>();
  158     Optional<NonLoc> lowerBoundToCheck = lowerBound.getAs<NonLoc>();
  182     if (!extentVal.getAs<NonLoc>())
  186       std::pair<NonLoc, nonloc::ConcreteInt> simplifiedOffsets =
  195                                               extentVal.castAs<NonLoc>(),
  198     Optional<NonLoc> upperboundToCheck = upperbound.getAs<NonLoc>();
  198     Optional<NonLoc> upperboundToCheck = upperbound.getAs<NonLoc>();
  284                               NonLoc baseVal, CharUnits scaling,
  300   return svalBuilder.evalBinOpNN(state, BO_Add, x.castAs<NonLoc>(),
  301                                  y.castAs<NonLoc>(),
  327         if (!index.getAs<NonLoc>())
  339                           index.castAs<NonLoc>(),
tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  247                                             NonLoc left,
  248                                             NonLoc right) const;
  403   Optional<NonLoc> Length = LengthVal.getAs<NonLoc>();
  403   Optional<NonLoc> Length = LengthVal.getAs<NonLoc>();
  408   NonLoc One = svalBuilder.makeIntVal(1, sizeTy).castAs<NonLoc>();
  408   NonLoc One = svalBuilder.makeIntVal(1, sizeTy).castAs<NonLoc>();
  412   NonLoc LastOffset = Offset.castAs<NonLoc>();
  412   NonLoc LastOffset = Offset.castAs<NonLoc>();
  520   Optional<NonLoc> Length = LengthVal.getAs<NonLoc>();
  520   Optional<NonLoc> Length = LengthVal.getAs<NonLoc>();
  660                                                      NonLoc left,
  661                                                      NonLoc right) const {
  675   NonLoc maxVal = svalBuilder.makeIntVal(maxValInt);
  689   if (Optional<NonLoc> maxMinusRightNL = maxMinusRight.getAs<NonLoc>()) {
  689   if (Optional<NonLoc> maxMinusRightNL = maxMinusRight.getAs<NonLoc>()) {
  774     if (Optional<NonLoc> strLn = strLength.getAs<NonLoc>()) {
  774     if (Optional<NonLoc> strLn = strLength.getAs<NonLoc>()) {
  781       NonLoc maxLength = svalBuilder.makeIntVal(*maxLengthInt);
  904   Optional<NonLoc> Length = LengthVal.getAs<NonLoc>();
  904   Optional<NonLoc> Length = LengthVal.getAs<NonLoc>();
  909   NonLoc One = svalBuilder.makeIntVal(1, sizeTy).castAs<NonLoc>();
  909   NonLoc One = svalBuilder.makeIntVal(1, sizeTy).castAs<NonLoc>();
  913   NonLoc LastOffset = Offset.castAs<NonLoc>();
  913   NonLoc LastOffset = Offset.castAs<NonLoc>();
 1062   Optional<NonLoc> SizeNL = SizeVal.getAs<NonLoc>();
 1062   Optional<NonLoc> SizeNL = SizeVal.getAs<NonLoc>();
 1416     Optional<NonLoc> strLengthNL = strLength.getAs<NonLoc>();
 1416     Optional<NonLoc> strLengthNL = strLength.getAs<NonLoc>();
 1417     Optional<NonLoc> maxlenValNL = maxlenVal.getAs<NonLoc>();
 1417     Optional<NonLoc> maxlenValNL = maxlenVal.getAs<NonLoc>();
 1444       NonLoc resultNL = result.castAs<NonLoc>();
 1444       NonLoc resultNL = result.castAs<NonLoc>();
 1593     Optional<NonLoc> strLengthNL = strLength.getAs<NonLoc>();
 1593     Optional<NonLoc> strLengthNL = strLength.getAs<NonLoc>();
 1594     Optional<NonLoc> lenValNL = lenVal.getAs<NonLoc>();
 1594     Optional<NonLoc> lenValNL = lenVal.getAs<NonLoc>();
 1633         if (Optional<NonLoc> dstStrLengthNL = dstStrLength.getAs<NonLoc>()) {
 1633         if (Optional<NonLoc> dstStrLengthNL = dstStrLength.getAs<NonLoc>()) {
 1668         NonLoc one = svalBuilder.makeIntVal(1, sizeTy).castAs<NonLoc>();
 1668         NonLoc one = svalBuilder.makeIntVal(1, sizeTy).castAs<NonLoc>();
 1686       if (Optional<NonLoc> amountCopiedNL = amountCopied.getAs<NonLoc>()) {
 1686       if (Optional<NonLoc> amountCopiedNL = amountCopied.getAs<NonLoc>()) {
 1736     Optional<NonLoc> srcStrLengthNL = amountCopied.getAs<NonLoc>();
 1736     Optional<NonLoc> srcStrLengthNL = amountCopied.getAs<NonLoc>();
 1737     Optional<NonLoc> dstStrLengthNL = dstStrLength.getAs<NonLoc>();
 1737     Optional<NonLoc> dstStrLengthNL = dstStrLength.getAs<NonLoc>();
 1758       if (Optional<NonLoc> finalStrLengthNL = finalStrLength.getAs<NonLoc>()) {
 1758       if (Optional<NonLoc> finalStrLengthNL = finalStrLength.getAs<NonLoc>()) {
 1812       if (Optional<NonLoc> maxLastNL = maxLastElementIndex.getAs<NonLoc>()) {
 1812       if (Optional<NonLoc> maxLastNL = maxLastElementIndex.getAs<NonLoc>()) {
 1823     if (Optional<NonLoc> knownStrLength = finalStrLength.getAs<NonLoc>()) {
 1823     if (Optional<NonLoc> knownStrLength = finalStrLength.getAs<NonLoc>()) {
tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp
  354 bool isZero(ProgramStateRef State, const NonLoc &Val);
 1043   if (isZero(State, Value.castAs<NonLoc>()))
 1637 bool compare(ProgramStateRef State, NonLoc NL1, NonLoc NL2,
 1637 bool compare(ProgramStateRef State, NonLoc NL1, NonLoc NL2,
 2283 bool isZero(ProgramStateRef State, const NonLoc &Val) {
 2355 bool compare(ProgramStateRef State, NonLoc NL1, NonLoc NL2,
 2355 bool compare(ProgramStateRef State, NonLoc NL1, NonLoc NL2,
tools/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp
  169       const NonLoc Idx = Ctx.getSValBuilder().makeArrayIndex(i);
tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
 1014   if (!V.getAs<NonLoc>()) {
 1020   NonLoc Flags = V.castAs<NonLoc>();
 1020   NonLoc Flags = V.castAs<NonLoc>();
 1021   NonLoc ZeroFlag = C.getSValBuilder()
 1023       .castAs<NonLoc>();
 1404   if (ElementCount.getAs<NonLoc>()) {
 1408         State, BO_Mul, ElementCount.castAs<NonLoc>(),
tools/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
  249   if (auto N = V.getAs<NonLoc>()) {
  280   if (auto N = V.getAs<NonLoc>()) {
tools/clang/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp
  232   if (!V.getAs<NonLoc>()) {
  237   NonLoc oflags = V.castAs<NonLoc>();
  237   NonLoc oflags = V.castAs<NonLoc>();
  238   NonLoc ocreateFlag = C.getSValBuilder()
  239       .makeIntVal(Val_O_CREAT.getValue(), oflagsEx->getType()).castAs<NonLoc>();
tools/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp
  157   NonLoc ArrayLength =
  158       svalBuilder.evalCast(sizeD, SizeTy, SE->getType()).castAs<NonLoc>();
  166       state, BO_Mul, ArrayLength, EleSizeVal.castAs<NonLoc>(), SizeTy);
tools/clang/lib/StaticAnalyzer/Core/CheckerContext.cpp
  106   if (!LHSVal.getAs<NonLoc>()) {
  109     if (LHSVal.isUnknownOrUndef() || !LHSVal.getAs<NonLoc>())
tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  322     if (!InitValWithAdjustments.getAs<NonLoc>()) {
 2376     if (Optional<NonLoc> NL = CondV.getAs<NonLoc>())
 2376     if (Optional<NonLoc> NL = CondV.getAs<NonLoc>())
tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
 1024           state = state->BindExpr(U, LCtx, evalComplement(V.castAs<NonLoc>()));
 1028           state = state->BindExpr(U, LCtx, evalMinus(V.castAs<NonLoc>()));
 1044             Result = evalBinOp(state, BO_EQ, V.castAs<NonLoc>(), X,
tools/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
  989 MemRegionManager::getElementRegion(QualType elementType, NonLoc Idx,
tools/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
  338                                         Idx.castAs<NonLoc>(), Min, indexTy);
  344     svalBuilder.evalBinOpNN(this, BO_Add, UpperBound.castAs<NonLoc>(),
  351   SVal inBound = svalBuilder.evalBinOpNN(this, BO_LT, newIdx.castAs<NonLoc>(),
  352                                          newBound.castAs<NonLoc>(), Ctx.IntTy);
tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
  587   NonLoc createLazyBinding(RegionBindingsConstRef B, const TypedValueRegion *R);
 1439   NonLoc ZeroIdx = svalBuilder.makeZeroArrayIndex();
 1926       NonLoc index = ER->getIndex();
 2092 NonLoc RegionStoreManager::createLazyBinding(RegionBindingsConstRef B,
 2270     const NonLoc &Idx = svalBuilder.makeArrayIndex(i);
 2317     NonLoc Idx = svalBuilder.makeArrayIndex(index);
tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
   67 NonLoc SValBuilder::makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op,
   77 NonLoc SValBuilder::makeNonLoc(const llvm::APSInt& lhs,
   85 NonLoc SValBuilder::makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op,
   92 NonLoc SValBuilder::makeNonLoc(const SymExpr *operand,
  110   return evalCastFromNonLoc(val.castAs<NonLoc>(), ArrayIndexTy);
  378                                    NonLoc LHS, NonLoc RHS,
  378                                    NonLoc LHS, NonLoc RHS,
  421     return evalBinOpLN(state, op, *LV, rhs.castAs<NonLoc>(), type);
  430     return evalBinOpLN(state, op, *RV, lhs.castAs<NonLoc>(), type);
  433   return evalBinOpNN(state, op, lhs.castAs<NonLoc>(), rhs.castAs<NonLoc>(),
  433   return evalBinOpNN(state, op, lhs.castAs<NonLoc>(), rhs.castAs<NonLoc>(),
  503   NonLoc ToTypeMaxVal =
  507           .castAs<NonLoc>();
  510   NonLoc FromVal = val.castAs<NonLoc>();
  510   NonLoc FromVal = val.castAs<NonLoc>();
  512   NonLoc CompVal =
  513       evalBinOpNN(state, BO_LE, FromVal, ToTypeMaxVal, CmpTy).castAs<NonLoc>();
  518     NonLoc CastVal = makeNonLoc(se, originalTy, castTy);
tools/clang/lib/StaticAnalyzer/Core/SVals.cpp
  302       castAs<NonLoc>().dumpToStream(os);
tools/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
   41   return assume(State, Cond.castAs<NonLoc>(), Assumption);
   45                                                 NonLoc Cond, bool Assumption) {
   53                                                    NonLoc Cond,
   95     ProgramStateRef State, NonLoc Value, const llvm::APSInt &From,
tools/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
   27   SVal evalCastFromNonLoc(NonLoc val, QualType castTy) override;
   36   SVal evalMinus(NonLoc val) override;
   37   SVal evalComplement(NonLoc val) override;
   39                    NonLoc lhs, NonLoc rhs, QualType resultTy) override;
   39                    NonLoc lhs, NonLoc rhs, QualType resultTy) override;
   43                    Loc lhs, NonLoc rhs, QualType resultTy) override;
   71                            : evalCastFromNonLoc(Val.castAs<NonLoc>(), CastTy);
   74 SVal SimpleSValBuilder::evalCastFromNonLoc(NonLoc val, QualType castTy) {
  195 SVal SimpleSValBuilder::evalMinus(NonLoc val) {
  204 SVal SimpleSValBuilder::evalComplement(NonLoc X) {
  371 static NonLoc doRearrangeUnchecked(ProgramStateRef State,
  399         .castAs<NonLoc>();
  446 static Optional<NonLoc> tryRearrange(ProgramStateRef State,
  447                                      BinaryOperator::Opcode Op, NonLoc Lhs,
  448                                      NonLoc Rhs, QualType ResultTy) {
  506                                   NonLoc lhs, NonLoc rhs,
  506                                   NonLoc lhs, NonLoc rhs,
  508   NonLoc InputLHS = lhs;
  509   NonLoc InputRHS = rhs;
  755         if (auto simplifiedLhsAsNonLoc = simplifiedLhs.getAs<NonLoc>()) {
  764       if (Optional<NonLoc> V = tryRearrange(state, op, lhs, rhs, resultTy))
  899       if (Optional<NonLoc> Result = ResultVal.getAs<NonLoc>())
  899       if (Optional<NonLoc> Result = ResultVal.getAs<NonLoc>())
  949           NonLoc l = evalCastFromLoc(lhs, boolType).castAs<NonLoc>();
  949           NonLoc l = evalCastFromLoc(lhs, boolType).castAs<NonLoc>();
  950           NonLoc r = makeTruthVal(false, boolType).castAs<NonLoc>();
  950           NonLoc r = makeTruthVal(false, boolType).castAs<NonLoc>();
 1028         Optional<NonLoc> LeftIndex = LeftIndexVal.getAs<NonLoc>();
 1028         Optional<NonLoc> LeftIndex = LeftIndexVal.getAs<NonLoc>();
 1032         LeftIndex = LeftIndexVal.getAs<NonLoc>();
 1038         Optional<NonLoc> RightIndex = RightIndexVal.getAs<NonLoc>();
 1038         Optional<NonLoc> RightIndex = RightIndexVal.getAs<NonLoc>();
 1042         RightIndex = RightIndexVal.getAs<NonLoc>();
 1105                                   Loc lhs, NonLoc rhs, QualType resultTy) {
 1170     rhs = convertToArrayIndex(rhs).castAs<NonLoc>();
 1202     if (Optional<NonLoc> indexV = index.getAs<NonLoc>()) {
 1202     if (Optional<NonLoc> indexV = index.getAs<NonLoc>()) {
tools/clang/lib/StaticAnalyzer/Core/Store.cpp
   63   NonLoc idx = svalBuilder.makeArrayIndex(index);
   69   NonLoc idx = svalBuilder.makeZeroArrayIndex();
  477 SVal StoreManager::getLValueElement(QualType elementType, NonLoc Offset,
  496   Offset = svalBuilder.convertToArrayIndex(Offset).castAs<NonLoc>();
usr/include/c++/7.4.0/bits/move.h
   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
  184     typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>,
  185 			      is_move_constructible<_Tp>,
  186 			      is_move_assignable<_Tp>>::value>::type
  187     swap(_Tp& __a, _Tp& __b)
  187     swap(_Tp& __a, _Tp& __b)
  198       _Tp __tmp = _GLIBCXX_MOVE(__a);
usr/include/c++/7.4.0/bits/stl_pair.h
  100 	return __and_<is_constructible<_T1, const _U1&>,
  100 	return __and_<is_constructible<_T1, const _U1&>,
  107 	return __and_<is_convertible<const _U1&, _T1>,
  107 	return __and_<is_convertible<const _U1&, _T1>,
  114 	return __and_<is_constructible<_T1, _U1&&>,
  114 	return __and_<is_constructible<_T1, _U1&&>,
  121 	return __and_<is_convertible<_U1&&, _T1>,
  121 	return __and_<is_convertible<_U1&&, _T1>,
  128 	using __do_converts = __and_<is_convertible<const _U1&, _T1>,
  128 	using __do_converts = __and_<is_convertible<const _U1&, _T1>,
  133 	return __and_<is_constructible<_T1, const _U1&>,
  133 	return __and_<is_constructible<_T1, const _U1&>,
  142 	using __do_converts = __and_<is_convertible<_U1&&, _T1>,
  142 	using __do_converts = __and_<is_convertible<_U1&&, _T1>,
  147 	return __and_<is_constructible<_T1, _U1&&>,
  147 	return __and_<is_constructible<_T1, _U1&&>,
  209     : private __pair_base<_T1, _T2>
  211       typedef _T1 first_type;    /// @c first_type is the first bound type
  214       _T1 first;                 /// @c first is a copy of the first object
  252       using _PCCP = _PCC<true, _T1, _T2>;
  260       constexpr pair(const _T1& __a, const _T2& __b)
  269       explicit constexpr pair(const _T1& __a, const _T2& __b)
  283 			    _T1, _T2>;
  311        constexpr pair(_U1&& __x, const _T2& __y)
  325        constexpr pair(const _T1& __x, _U2&& __y)
  332        explicit pair(const _T1& __x, _U2&& __y)
  341 	constexpr pair(_U1&& __x, _U2&& __y)
  379 		__and_<is_copy_assignable<_T1>,
  390 		__and_<is_move_assignable<_T1>,
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>
 1215     : public __and_<is_constructible<_Tp, _Args...>,
 1216 		    __is_nt_constructible_impl<_Tp, _Args...>>
 1246     : public is_nothrow_constructible<_Tp, _Tp&&>
 1246     : public is_nothrow_constructible<_Tp, _Tp&&>
 1252     : public __is_nothrow_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>
 1304     : public is_assignable<_Tp&, _Tp&&>
 1304     : public is_assignable<_Tp&, _Tp&&>
 1310     : public __is_move_assignable_impl<_Tp>
 1352     : public is_nothrow_assignable<_Tp&, _Tp&&>
 1352     : public is_nothrow_assignable<_Tp&, _Tp&&>
 1358     : public __is_nt_move_assignable_impl<_Tp>
 1526 	static void __test_aux(_To1);
 1538       typedef decltype(__test<_From, _To>(0)) type;
 1545     : public __is_convertible_helper<_From, _To>::type
 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; };
 2574       typename remove_reference<_Tp>::type>::type>::type