================================================ template functions vs relational expressions ================================================ T1 a = b < c > d; T2 e = f(g); int a = std::get<0>(t); --- (translation_unit (declaration (type_identifier) (init_declarator (identifier) (binary_expression (binary_expression (identifier) (identifier)) (identifier)))) (declaration (type_identifier) (init_declarator (identifier) (call_expression (template_function (identifier) (template_argument_list (type_descriptor (type_identifier)))) (argument_list (identifier))))) (declaration (primitive_type) (init_declarator (identifier) (call_expression (qualified_identifier (namespace_identifier) (template_function (identifier) (template_argument_list (number_literal)))) (argument_list (identifier)))))) ================================================= function declarations vs variable initializations ================================================= // Function declarations T1 a(T2 *b); T3 c(T4 &d, T5 &&e); // Variable declarations with initializers T7 f(g.h); T6 i{j}; --- (translation_unit (comment) (declaration (type_identifier) (function_declarator (identifier) (parameter_list (parameter_declaration (type_identifier) (pointer_declarator (identifier)))))) (declaration (type_identifier) (function_declarator (identifier) (parameter_list (parameter_declaration (type_identifier) (reference_declarator (identifier))) (parameter_declaration (type_identifier) (reference_declarator (identifier)))))) (comment) (declaration (type_identifier) (init_declarator (identifier) (argument_list (field_expression (identifier) (field_identifier))))) (declaration (type_identifier) (init_declarator (identifier) (initializer_list (identifier))))) ================================================ template classes vs relational expressions ================================================ int main() { T1 v1; T1 v2 = v3; } --- (translation_unit (function_definition (primitive_type) (function_declarator (identifier) (parameter_list)) (compound_statement (declaration (template_type (type_identifier) (template_argument_list (type_descriptor (type_identifier)))) (identifier)) (declaration (template_type (type_identifier) (template_argument_list (type_descriptor (type_identifier)))) (init_declarator (identifier) (identifier))))))