Created
April 3, 2024 15:02
-
-
Save rcythr/76a31625739b4e77260c5e166cd39119 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TranslationUnitDecl 0x6845b8 <<invalid sloc>> <invalid sloc> | |
|-TypedefDecl 0x684e20 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128' | |
| `-BuiltinType 0x684b80 '__int128' | |
|-TypedefDecl 0x684e90 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128' | |
| `-BuiltinType 0x684ba0 'unsigned __int128' | |
|-TypedefDecl 0x685208 <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag' | |
| `-RecordType 0x684f80 '__NSConstantString_tag' | |
| `-CXXRecord 0x684ee8 '__NSConstantString_tag' | |
|-TypedefDecl 0x6852a0 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *' | |
| `-PointerType 0x685260 'char *' | |
| `-BuiltinType 0x684660 'char' | |
|-TypedefDecl 0x6ced28 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag[1]' | |
| `-ConstantArrayType 0x6cecd0 '__va_list_tag[1]' 1 | |
| `-RecordType 0x685390 '__va_list_tag' | |
| `-CXXRecord 0x6852f8 '__va_list_tag' | |
|-ClassTemplateDecl 0x6ceed0 <larrow.cc:2:1, line:6:1> line:3:8 larrow | |
| |-TemplateTypeParmDecl 0x6ced80 <line:2:10, col:16> col:16 referenced class depth 0 index 0 T | |
| |-CXXRecordDecl 0x6cee40 <line:3:1, line:6:1> line:3:8 struct larrow definition | |
| | |-DefinitionData standard_layout trivially_copyable has_user_declared_ctor can_const_default_init | |
| | | |-DefaultConstructor | |
| | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param | |
| | | |-MoveConstructor exists simple trivial needs_implicit | |
| | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param | |
| | | |-MoveAssignment exists simple trivial needs_implicit | |
| | | `-Destructor simple irrelevant trivial needs_implicit | |
| | |-CXXRecordDecl 0x6cf110 <col:1, col:8> col:8 implicit referenced struct larrow | |
| | |-CXXConstructorDecl 0x6cf338 <line:4:5, col:29> col:5 larrow<T> 'void (T *)' | |
| | | |-ParmVarDecl 0x6cf208 <col:12, col:15> col:15 referenced a_ 'T *' | |
| | | |-CXXCtorInitializer Field 0x6cf3f8 'a' 'T *' | |
| | | | `-ParenListExpr 0x6cf480 <col:22, col:25> 'NULL TYPE' | |
| | | | `-DeclRefExpr 0x6cf460 <col:23> 'T *' lvalue ParmVar 0x6cf208 'a_' 'T *' | |
| | | `-CompoundStmt 0x6cf4c8 <col:27, col:29> | |
| | `-FieldDecl 0x6cf3f8 <line:5:5, col:8> col:8 a 'T *' | |
| `-ClassTemplateSpecializationDecl 0x7036e8 <line:2:1, line:6:1> line:3:8 struct larrow definition | |
| |-DefinitionData pass_in_registers standard_layout trivially_copyable has_user_declared_ctor can_const_default_init | |
| | |-DefaultConstructor | |
| | |-CopyConstructor simple trivial has_const_param implicit_has_const_param | |
| | |-MoveConstructor exists simple trivial | |
| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param | |
| | |-MoveAssignment exists simple trivial needs_implicit | |
| | `-Destructor simple irrelevant trivial | |
| |-TemplateArgument type 'C' | |
| | `-RecordType 0x700030 'C' | |
| | `-CXXRecord 0x6fff98 'C' | |
| |-CXXRecordDecl 0x703bc8 <col:1, col:8> col:8 implicit struct larrow | |
| |-CXXConstructorDecl 0x703df0 <line:4:5, col:29> col:5 used larrow 'void (C *)' | |
| | |-ParmVarDecl 0x703cc8 <col:12, col:15> col:15 used a_ 'C *' | |
| | |-CXXCtorInitializer Field 0x703ec0 'a' 'C *' | |
| | | `-ImplicitCastExpr 0x7063f8 <col:23> 'C *' <LValueToRValue> | |
| | | `-DeclRefExpr 0x7063b8 <col:23> 'C *' lvalue ParmVar 0x703cc8 'a_' 'C *' | |
| | `-CompoundStmt 0x6cf4c8 <col:27, col:29> | |
| |-FieldDecl 0x703ec0 <line:5:5, col:8> col:8 referenced a 'C *' | |
| |-CXXDestructorDecl 0x703f28 <line:3:8> col:8 implicit referenced ~larrow 'void () noexcept' inline default trivial | |
| |-CXXConstructorDecl 0x705ae8 <col:8> col:8 implicit constexpr larrow 'void (const larrow<C> &)' inline default trivial noexcept-unevaluated 0x705ae8 | |
| | `-ParmVarDecl 0x705bf8 <col:8> col:8 'const larrow<C> &' | |
| `-CXXConstructorDecl 0x705ca8 <col:8> col:8 implicit used constexpr larrow 'void (larrow<C> &&) noexcept' inline default trivial | |
| |-ParmVarDecl 0x705db8 <col:8> col:8 used 'larrow<C> &&' | |
| |-CXXCtorInitializer Field 0x703ec0 'a' 'C *' | |
| | `-ImplicitCastExpr 0x706030 <col:8> 'C *' <LValueToRValue> | |
| | `-MemberExpr 0x706000 <col:8> 'C *' xvalue .a 0x703ec0 | |
| | `-CXXStaticCastExpr 0x705fd0 <col:8> 'larrow<C>' xvalue static_cast<struct larrow<struct C> &&> <NoOp> | |
| | `-DeclRefExpr 0x705fa0 <col:8> 'larrow<C>' lvalue ParmVar 0x705db8 '' 'larrow<C> &&' | |
| `-CompoundStmt 0x706070 <col:8> | |
|-FunctionTemplateDecl 0x6cfa48 <line:8:1, line:11:1> line:9:3 operator< | |
| |-TemplateTypeParmDecl 0x6cf4d8 <line:8:11, col:17> col:17 referenced class depth 0 index 0 T | |
| |-TemplateTypeParmDecl 0x6cf558 <col:20, col:26> col:26 referenced class depth 0 index 1 R | |
| |-FunctionDecl 0x6cf9a8 <line:9:1, line:11:1> line:9:3 operator< 'R (R (T::*)(), larrow<T>)' | |
| | |-ParmVarDecl 0x6cf798 <col:13, col:24> col:21 referenced f 'R (T::*)()' | |
| | |-ParmVarDecl 0x6cf890 <col:27, col:37> col:37 referenced it 'larrow<T>' | |
| | `-CompoundStmt 0x6cfc68 <col:41, line:11:1> | |
| | `-ReturnStmt 0x6cfc58 <line:10:5, col:23> | |
| | `-CallExpr 0x6cfc38 <col:12, col:23> '<dependent type>' | |
| | `-ParenExpr 0x6cfc18 <col:12, col:21> '<dependent type>' | |
| | `-BinaryOperator 0x6cfbf8 <col:13, col:20> '<dependent type>' '->*' | |
| | |-CXXDependentScopeMemberExpr 0x6cfb90 <col:13, col:16> '<dependent type>' lvalue .a | |
| | | `-DeclRefExpr 0x6cfb70 <col:13> 'larrow<T>' lvalue ParmVar 0x6cf890 'it' 'larrow<T>' | |
| | `-DeclRefExpr 0x6cfbd8 <col:20> 'R (T::*)()' lvalue ParmVar 0x6cf798 'f' 'R (T::*)()' | |
| `-FunctionDecl 0x704398 <line:9:1, line:11:1> line:9:3 used operator< 'void (void (C::*)(), larrow<C>)' | |
| |-TemplateArgument type 'C' | |
| | `-RecordType 0x700030 'C' | |
| | `-CXXRecord 0x6fff98 'C' | |
| |-TemplateArgument type 'void' | |
| | `-BuiltinType 0x684620 'void' | |
| |-ParmVarDecl 0x7041a8 <col:13, col:24> col:21 used f 'void (C::*)()' | |
| |-ParmVarDecl 0x704280 <col:27, col:37> col:37 used it 'larrow<C>':'larrow<C>' | |
| `-CompoundStmt 0x706548 <col:41, line:11:1> | |
| `-ReturnStmt 0x706538 <line:10:5, col:23> | |
| `-CXXMemberCallExpr 0x706518 <col:12, col:23> 'void':'void' | |
| `-ParenExpr 0x7064f8 <col:12, col:21> '<bound member function type>' | |
| `-BinaryOperator 0x7064d8 <col:13, col:20> '<bound member function type>' '->*' | |
| |-ImplicitCastExpr 0x7064a8 <col:13, col:16> 'C *' <LValueToRValue> | |
| | `-MemberExpr 0x706458 <col:13, col:16> 'C *' lvalue .a 0x703ec0 | |
| | `-DeclRefExpr 0x706438 <col:13> 'larrow<C>':'larrow<C>' lvalue ParmVar 0x704280 'it' 'larrow<C>':'larrow<C>' | |
| `-ImplicitCastExpr 0x7064c0 <col:20> 'void (C::*)()' <LValueToRValue> | |
| `-DeclRefExpr 0x706488 <col:20> 'void (C::*)()' lvalue ParmVar 0x7041a8 'f' 'void (C::*)()' | |
|-FunctionTemplateDecl 0x6ffda8 <line:13:1, line:16:1> line:14:11 operator- | |
| |-TemplateTypeParmDecl 0x6cfc80 <line:13:10, col:16> col:16 referenced class depth 0 index 0 T | |
| |-FunctionDecl 0x6ffd08 <line:14:1, line:16:1> line:14:11 operator- 'larrow<T> (T &)' | |
| | |-ParmVarDecl 0x6ffc08 <col:21, col:24> col:24 referenced a 'T &' | |
| | `-CompoundStmt 0x6fff80 <col:27, line:16:1> | |
| | `-ReturnStmt 0x6fff70 <line:15:5, col:24> | |
| | `-CXXUnresolvedConstructExpr 0x6fff48 <col:12, col:24> 'larrow<T>' 'larrow<T>' | |
| | `-UnaryOperator 0x6fff30 <col:22, col:23> '<dependent type>' prefix '&' cannot overflow | |
| | `-DeclRefExpr 0x6fff10 <col:23> 'T' lvalue ParmVar 0x6ffc08 'a' 'T &' | |
| `-FunctionDecl 0x703998 <line:14:1, line:16:1> line:14:11 used operator- 'larrow<C> (C &)' | |
| |-TemplateArgument type 'C' | |
| | `-RecordType 0x700030 'C' | |
| | `-CXXRecord 0x6fff98 'C' | |
| |-ParmVarDecl 0x703898 <col:21, col:24> col:24 used a 'C &' | |
| `-CompoundStmt 0x7063a0 <col:27, line:16:1> | |
| `-ReturnStmt 0x706390 <line:15:5, col:24> | |
| `-ExprWithCleanups 0x706378 <col:12, col:24> 'larrow<C>':'larrow<C>' | |
| `-CXXConstructExpr 0x706348 <col:12, col:24> 'larrow<C>':'larrow<C>' 'void (larrow<C> &&) noexcept' elidable | |
| `-MaterializeTemporaryExpr 0x706300 <col:12, col:24> 'larrow<C>':'larrow<C>' xvalue | |
| `-CXXFunctionalCastExpr 0x7062d8 <col:12, col:24> 'larrow<C>':'larrow<C>' functional cast to larrow<struct C> <ConstructorConversion> | |
| `-CXXConstructExpr 0x7062a8 <col:12, col:24> 'larrow<C>':'larrow<C>' 'void (C *)' | |
| `-UnaryOperator 0x706268 <col:22, col:23> 'C *' prefix '&' cannot overflow | |
| `-DeclRefExpr 0x706220 <col:23> 'C':'C' lvalue ParmVar 0x703898 'a' 'C &' | |
|-CXXRecordDecl 0x6fff98 <line:18:1, line:20:1> line:18:8 referenced struct C definition | |
| |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init | |
| | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr | |
| | |-CopyConstructor simple trivial has_const_param implicit_has_const_param | |
| | |-MoveConstructor exists simple trivial | |
| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param | |
| | |-MoveAssignment exists simple trivial needs_implicit | |
| | `-Destructor simple irrelevant trivial needs_implicit | |
| |-CXXRecordDecl 0x7000b8 <col:1, col:8> col:8 implicit struct C | |
| |-CXXMethodDecl 0x7001c8 <line:19:5, col:21> col:10 used f 'void ()' | |
| | `-CompoundStmt 0x7002e0 <col:14, col:21> | |
| | `-BinaryOperator 0x7002c0 <col:16, col:18> 'int' '+' | |
| | |-IntegerLiteral 0x700280 <col:16> 'int' 3 | |
| | `-IntegerLiteral 0x7002a0 <col:18> 'int' 5 | |
| |-CXXConstructorDecl 0x7004a8 <line:18:8> col:8 implicit used constexpr C 'void () noexcept' inline default trivial | |
| | `-CompoundStmt 0x700928 <col:8> | |
| |-CXXConstructorDecl 0x7005a8 <col:8> col:8 implicit constexpr C 'void (const C &)' inline default trivial noexcept-unevaluated 0x7005a8 | |
| | `-ParmVarDecl 0x7006b8 <col:8> col:8 'const C &' | |
| `-CXXConstructorDecl 0x700768 <col:8> col:8 implicit constexpr C 'void (C &&)' inline default trivial noexcept-unevaluated 0x700768 | |
| `-ParmVarDecl 0x700878 <col:8> col:8 'C &&' | |
`-FunctionDecl 0x700350 <line:22:1, line:25:1> line:22:5 main 'int ()' | |
`-CompoundStmt 0x706190 <col:12, line:25:1> | |
|-DeclStmt 0x700a20 <line:23:5, col:8> | |
| `-VarDecl 0x700428 <col:5, col:7> col:7 used x 'C' callinit | |
| `-CXXConstructExpr 0x7009f8 <col:7> 'C' 'void () noexcept' | |
`-ExprWithCleanups 0x706178 <line:24:5, col:14> 'void':'void' | |
`-CXXOperatorCallExpr 0x706140 <col:5, col:14> 'void':'void' '<' | |
|-ImplicitCastExpr 0x706128 <col:12> 'void (*)(void (C::*)(), larrow<C>)' <FunctionToPointerDecay> | |
| `-DeclRefExpr 0x7060b0 <col:12> 'void (void (C::*)(), larrow<C>)' lvalue Function 0x704398 'operator<' 'void (void (C::*)(), larrow<C>)' | |
|-ParenExpr 0x703638 <col:5, col:11> 'void (C::*)()' | |
| `-UnaryOperator 0x703620 <col:6, col:10> 'void (C::*)()' prefix '&' cannot overflow | |
| `-DeclRefExpr 0x700a88 <col:7, col:10> 'void ()' CXXMethod 0x7001c8 'f' 'void ()' | |
`-CXXConstructExpr 0x706080 <col:13, col:14> 'larrow<C>':'larrow<C>' 'void (larrow<C> &&) noexcept' elidable | |
`-MaterializeTemporaryExpr 0x705e38 <col:13, col:14> 'larrow<C>':'larrow<C>' xvalue | |
`-CXXOperatorCallExpr 0x703b30 <col:13, col:14> 'larrow<C>':'larrow<C>' '-' | |
|-ImplicitCastExpr 0x703b18 <col:13> 'larrow<C> (*)(C &)' <FunctionToPointerDecay> | |
| `-DeclRefExpr 0x703a98 <col:13> 'larrow<C> (C &)' lvalue Function 0x703998 'operator-' 'larrow<C> (C &)' | |
`-DeclRefExpr 0x703658 <col:14> 'C' lvalue Var 0x700428 'x' 'C' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment