TranslationUnitDecl 0x55ef9e924298 <> |-TypedefDecl 0x55ef9e924b20 <> implicit __int128_t '__int128' | `-BuiltinType 0x55ef9e924860 '__int128' |-TypedefDecl 0x55ef9e924b98 <> implicit __uint128_t 'unsigned __int128' | `-BuiltinType 0x55ef9e924880 'unsigned __int128' |-TypedefDecl 0x55ef9e924f50 <> implicit __NSConstantString '__NSConstantString_tag' | `-RecordType 0x55ef9e924ca0 '__NSConstantString_tag' | `-CXXRecord 0x55ef9e924bf8 '__NSConstantString_tag' |-TypedefDecl 0x55ef9e924ff8 <> implicit __builtin_ms_va_list 'char *' | `-PointerType 0x55ef9e924fb0 'char *' | `-BuiltinType 0x55ef9e924340 'char' |-TypedefDecl 0x55ef9e9700d0 <> implicit __builtin_va_list '__va_list_tag[1]' | `-ConstantArrayType 0x55ef9e970070 '__va_list_tag[1]' 1 | `-RecordType 0x55ef9e925100 '__va_list_tag' | `-CXXRecord 0x55ef9e925058 '__va_list_tag' |-FunctionDecl 0x55ef9e970180 <:1:1, col:8> col:6 f 'void ()' |-FunctionTemplateDecl 0x55ef9e9705b8 <, line:5:1> line:3:7 Bar | |-TemplateTypeParmDecl 0x55ef9e9702c8 col:16 implicit class depth 0 index 0 auto:1 | |-FunctionDecl 0x55ef9e970510 line:3:7 Bar 'char (auto)' | | |-ParmVarDecl 0x55ef9e9703e0 col:16 'auto' | | `-CompoundStmt 0x55ef9e970738 | | `-ReturnStmt 0x55ef9e970728 | | `-InitListExpr 0x55ef9e9706e8 'char' | `-FunctionDecl 0x55ef9e99e510 line:3:7 used Bar 'char ((lambda at :8:18))' | |-TemplateArgument type '(lambda at :8:18)' | | `-RecordType 0x55ef9e970b40 '(lambda at :8:18)' | | `-CXXRecord 0x55ef9e970a10 '' | |-ParmVarDecl 0x55ef9e99e410 col:16 '(lambda at :8:18)':'(lambda at :8:18)' | `-CompoundStmt 0x55ef9e99e828 | `-ReturnStmt 0x55ef9e99e818 | `-InitListExpr 0x55ef9e99e7d8 'char' `-FunctionDecl 0x55ef9e9707a8 line:7:5 main 'int ()' `-CompoundStmt 0x55ef9e99e778 |-DeclStmt 0x55ef9e99e700 | `-VarDecl 0x55ef9e9708a8 col:10 used c 'char' cinit | `-CallExpr 0x55ef9e99e6c0 'char' | |-ImplicitCastExpr 0x55ef9e99e6a8 'char (*)((lambda at :8:18))' | | `-DeclRefExpr 0x55ef9e99e610 'char ((lambda at :8:18))' lvalue Function 0x55ef9e99e510 'Bar' 'char ((lambda at :8:18))' (FunctionTemplate 0x55ef9e9705b8 'Bar') | `-LambdaExpr 0x55ef9e99e218 '(lambda at :8:18)' | |-CXXRecordDecl 0x55ef9e970a10 col:18 implicit class definition | | |-DefinitionData lambda pass_in_registers empty standard_layout trivially_copyable trivial literal has_constexpr_non_copy_move_ctor can_const_default_init | | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr | | | |-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 constexpr | | |-CXXMethodDecl 0x55ef9e970b68 col:18 constexpr operator() 'auto () const -> void' inline | | | `-CompoundStmt 0x55ef9e970c18 | | |-CXXConversionDecl 0x55ef9e99e078 col:18 implicit constexpr operator void (*)() 'auto (*() const noexcept)() -> void' inline | | |-CXXMethodDecl 0x55ef9e99e130 col:18 implicit __invoke 'auto () -> void' static inline | | `-CXXDestructorDecl 0x55ef9e99e248 col:18 implicit referenced constexpr ~ 'void () noexcept' inline default trivial | `-CompoundStmt 0x55ef9e970c18 `-ReturnStmt 0x55ef9e99e768 `-ImplicitCastExpr 0x55ef9e99e750 'int' `-ImplicitCastExpr 0x55ef9e99e738 'char' `-DeclRefExpr 0x55ef9e99e718 'char' lvalue Var 0x55ef9e9708a8 'c' 'char'