You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
INSTRUCTION_NODE(aggregate_initialize_explicit_copy_init_list, "Copy-initialize the element from the corresponding initializer-clause.", "[dcl.init.aggr]/4.2")
INSTRUCTION_NODE(aggregate_initialize_explicit_copy_designated, "Initialize the element with the brace-or-equal-initializer of the corresponding designated-initializer-clause.", "[dcl.init.aggr]/4.2")
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing_checked, "Is the initializer of the form \"assignment-expression\" or \"= assignment-expression\"?", "[dcl.init.aggr]/4.2", aggregate_initialize_explicit_is_narrowing, aggregate_initialize_explicit_repeat_next)
98
+
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing_checked_no_eq, "Is the initializer of the form \"assignment-expression\"?", "[dcl.init.aggr]/4.2", aggregate_initialize_explicit_is_narrowing, aggregate_initialize_explicit_is_narrowing_checked_eq)
99
+
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing_checked_eq, "Is the initializer of the form \"= assignment-expression\"?", "[dcl.init.aggr]/4.2", aggregate_initialize_explicit_is_narrowing, aggregate_initialize_explicit_repeat_next)
99
100
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing, "Is a narrowing conversion required to convert the expression?", "[dcl.init.aggr]/4.2", NEW_ILL_FORMED(), aggregate_initialize_explicit_repeat_next)
INSTRUCTION_NODE(class_consider_constructors, "Enumerate constructors and select the best through overload resolution.", "[dcl.init.general]/16.6.2")
91
+
INSTRUCTION_NODE(class_consider_constructors, "Enumerate applicable constructors and select the best through overload resolution.", "[dcl.init.general]/16.6.2")
-> INSTRUCTION_NODE(class_user_defined_conv_enumerate, "Enumerate the user-defined conversions that can convert from the source type to the destination type or (when a conversion function is used) to a derived class thereof (as described in [over.match.copy])")
122
+
-> INSTRUCTION_NODE(class_user_defined_conv_enumerate, "Enumerate the user-defined conversions that can convert from the source type to the destination type or (when a conversion function is used) to a derived class thereof (as described in [over.match.copy]).")
123
123
-> INSTRUCTION_NODE(class_user_defined_conv_overload_resolution, "Use overload resolution to select the best conversion.")
124
124
-> class_user_defined_conv_is_possible
125
125
126
126
YN_QUESTION_NODE_NO_CITE(class_user_defined_conv_is_possible, "Is the conversion ambiguous or impossible?", NEW_ILL_FORMED(), class_user_defined_conv_do_conversion)
127
127
128
-
INSTRUCTION_NODE(class_user_defined_conv_do_conversion, "Call the selected function with the initializer-expression as its argument.")
128
+
INSTRUCTION_NODE(class_user_defined_conv_do_conversion, "Call the selected function with the initializerexpression as its argument.")
129
129
-> call_user_defined_conv_is_constructor
130
130
131
131
YN_QUESTION_NODE_NO_CITE(call_user_defined_conv_is_constructor, "Is the selected function a constructor?", call_user_defined_conv_constructor, class_user_defined_conv_initialize)
Copy file name to clipboardExpand all lines: cpp23/list_init.dot.cpp
+8-8Lines changed: 8 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ subgraph list_initialization {
17
17
{
18
18
YN_QUESTION_NODE(list_has_designated_initializer, "Does the braced-init-list contain a designated-initializer-list?", "[dcl.init.list]/3.1", list_designated_initalizer_is_aggregate, list_is_aggregate_class)
19
19
YN_QUESTION_NODE(list_designated_initalizer_is_aggregate, "Is the type an aggregate class?", "[dcl.init.list]/3.1", list_designated_initializer_are_identifiers_valid, NEW_ILL_FORMED())
20
-
YN_QUESTION_NODE(list_designated_initializer_are_identifiers_valid, "Do the designators form a subsequence of the ordered idenitifiers in the direct non-static data members of the type?", "[dcl.init.list]/3.1", list_designated_initializer_aggregate_init, NEW_ILL_FORMED())
20
+
YN_QUESTION_NODE(list_designated_initializer_are_identifiers_valid, "Do the ordered identifiers in the designators of the designated-initializer-list form a subsequence of the ordered idenitifiers in the direct non-static data members of the type?", "[dcl.init.list]/3.1", list_designated_initializer_aggregate_init, NEW_ILL_FORMED())
21
21
22
22
INSTRUCTION_NODE(list_designated_initializer_aggregate_init, "Aggregate initialization is performed.", "[dcl.init.list]/3.1")
23
23
-> AGGREGATE_INIT_HEAD
@@ -58,7 +58,7 @@ subgraph list_initialization {
58
58
59
59
// 3.4
60
60
{
61
-
YN_QUESTION_NODE(list_is_aggregate, "Is the type an aggregate?", "[dcl.init.list]/3.4", list_aggregate_aggregate_initialization, list_is_list_empty)
61
+
YN_QUESTION_NODE(list_is_aggregate, "Is T an aggregate?", "[dcl.init.list]/3.4", list_aggregate_aggregate_initialization, list_is_list_empty)
62
62
63
63
INSTRUCTION_NODE(list_aggregate_aggregate_initialization, "Aggregate initialization is performed.", "[dcl.init.list]/3.4")
YN_QUESTION_NODE(list_is_list_empty, "Is the initializer list empty?", "[dcl.init.list]/3.5", list_empty_is_class, list_dest_is_initializer_list)
70
70
YN_QUESTION_NODE(list_empty_is_class, "Is T a class type?", "[dcl.init.list]/3.5", list_empty_has_default_constructor, list_dest_is_initializer_list)
71
-
YN_QUESTION_NODE(list_empty_has_default_constructor, "Does the class have a default constructor?", "[dcl.init.list]/3.5", list_empty_value_initialize, list_dest_is_initializer_list)
71
+
YN_QUESTION_NODE(list_empty_has_default_constructor, "Does T have a default constructor?", "[dcl.init.list]/3.5", list_empty_value_initialize, list_dest_is_initializer_list)
YN_QUESTION_NODE(list_dest_is_initializer_list, "Is the type a specialization of std::initializer_list?", "[dcl.init.list]/3.6", list_initializer_list_init, list_is_class)
78
+
YN_QUESTION_NODE(list_dest_is_initializer_list, "Is T a specialization of std::initializer_list?", "[dcl.init.list]/3.6", list_initializer_list_init, list_is_class)
YN_QUESTION_NODE(list_enum_is_convertible, "Can v be implicitly converted to U?", "[dcl.init.list]/3.8", list_enum_is_direct, list_final_is_singleton)
120
-
YN_QUESTION_NODE(list_enum_is_direct, "Is the initialization direct-list-initialization?", "[dcl.init.list]/3.8", list_enum_is_narrowing, list_final_is_singleton)
120
+
YN_QUESTION_NODE(list_enum_is_direct, "Is the initialization direct-list-initialization?", "[dcl.init.list]/3.8", list_enum_initialization, list_final_is_singleton)
121
121
122
-
YN_QUESTION_NODE(list_enum_is_narrowing, "Is a narrowing conversion required to convert v to U?", "[dcl.init.list]/3.8", NEW_ILL_FORMED(), list_enum_initialization)
122
+
INSTRUCTION_NODE(list_enum_initialization, "The object is initialized with the value \"T(v)\" (an explicit type conversion).")
123
+
-> list_enum_is_narrowing
123
124
124
-
INSTRUCTION_NODE(list_enum_initialization, "The object is initialized with the value \"T(u)\" (an explicit type conversion).")
125
-
-> NEW_DONE()
125
+
YN_QUESTION_NODE(list_enum_is_narrowing, "Is a narrowing conversion required to convert v to U?", "[dcl.init.list]/3.8", NEW_ILL_FORMED(), NEW_DONE())
YN_QUESTION_NODE(reference_dest_lval_is_source_lval_bitfield, "Is the initializer expression a bit-field?", "[dcl.init.ref]/5.1.1", reference_dest_lval_is_source_class, reference_lvals_is_compatible)
INSTRUCTION_NODE(reference_lvals_compatible_bind, "The destination reference is bound to the initializer expression lvalue (or appropriate base).", "[dcl.init.ref]/5.1")
23
+
INSTRUCTION_NODE(reference_lvals_compatible_bind, "Bind the destination reference to the initializer expression lvalue (or appropriate base class subobject).", "[dcl.init.ref]/5.1")
-> INSTRUCTION_NODE(reference_class_select_conversion, "Select the best applicable conversion function.", "[dcl.init.ref]/5.1.2")
35
-
-> INSTRUCTION_NODE(reference_class_do_initialization, "The destination reference is bound to the lvalue result of the conversion (or appropriate base).", "[dcl.init.ref]/5.1")
35
+
-> INSTRUCTION_NODE(reference_class_do_initialization, "Bind the destination reference to the lvalue result of the conversion (or appropriate base class subobject).", "[dcl.init.ref]/5.1")
YN_QUESTION_NODE(reference_rval_conv_source_is_class, "Is T2 a class type?", "[dcl.init.ref]/5.3.2", reference_rval_conv_source_class_is_ref_related, reference_temp_is_reference_related)
66
-
YN_QUESTION_NODE(reference_rval_conv_source_class_is_ref_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.3.2", reference_temp_is_reference_related, reference_rval_conv_source_class_convertible_target)
67
-
YN_QUESTION_NODE(reference_rval_conv_source_class_convertible_target, "Is the initializer convertible to an rvalue or function lvalue of type \"cv3 T3\", where \"cv1 T1\" is reference-compatible with \"cv3 T3\"?", "[dcl.init.ref]/5.3.2", reference_rval_conv_bind_converted, reference_temp_is_reference_related)
65
+
YN_QUESTION_NODE(reference_rval_conv_source_is_class, "Is T2 a class type?", "[dcl.init.ref]/5.3.2", reference_rval_conv_source_class_is_ref_related, reference_temp_is_dest_class)
66
+
YN_QUESTION_NODE(reference_rval_conv_source_class_is_ref_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.3.2", reference_temp_is_dest_class, reference_rval_conv_source_class_convertible_target)
67
+
YN_QUESTION_NODE(reference_rval_conv_source_class_convertible_target, "Is the initializer convertible to an rvalue or function lvalue of type \"cv3 T3\", where \"cv1 T1\" is reference-compatible with \"cv3 T3\"?", "[dcl.init.ref]/5.3.2", reference_rval_conv_bind_converted, reference_temp_is_dest_class)
68
68
69
-
INSTRUCTION_NODE(reference_rval_conv_bind_converted, "The converted initializer is the result of the conversion.", "[dcl.init.ref]/5.3")
69
+
INSTRUCTION_NODE(reference_rval_conv_bind_converted, "The converted initializer is the converted expression.", "[dcl.init.ref]/5.3")
70
70
-> reference_rval_conv_is_converted_prval
71
71
}
72
72
73
73
YN_QUESTION_NODE(reference_rval_conv_is_converted_prval, "Is the converted initializer a prvalue?", "[dcl.init.ref]/5.3", reference_rval_conv_prval_t4_defn, reference_rval_conv_bind_glval)
74
74
75
75
INSTRUCTION_NODE(reference_rval_conv_prval_t4_defn, "Let the prvalue have type \"T4\".", "[dcl.init.ref]/5.3")
76
-
-> INSTRUCTION_NODE(reference_rval_conv_prval_materialize, "The prvalue is materialized, considering its type to be \"cv1 T4\".", "[dcl.init.ref]/5.3")
76
+
-> INSTRUCTION_NODE(reference_rval_conv_prval_adjust_type, "Adjust the prvalue's type to \"cv1 T4\".")
77
+
-> INSTRUCTION_NODE(reference_rval_conv_prval_materialize, "The prvalue is materialized.", "[dcl.init.ref]/5.3")
77
78
-> reference_rval_conv_bind_glval
78
79
79
-
INSTRUCTION_NODE(reference_rval_conv_bind_glval, "The destination reference is bound to the resulting glvalue (or to an appropriate base class subobject).", "[dcl.init.ref]/5.3")
80
+
INSTRUCTION_NODE(reference_rval_conv_bind_glval, "Bind the destination reference to the resulting glvalue (or to an appropriate base class subobject).", "[dcl.init.ref]/5.3")
80
81
-> NEW_DONE()
81
82
}
82
83
83
84
// 5.4
84
85
{
85
86
// 5.4.1
86
87
{
87
-
YN_QUESTION_NODE(reference_temp_is_reference_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.4", NEW_ILL_FORMED(), reference_temp_is_dest_class)
88
+
YN_QUESTION_NODE(reference_temp_is_dest_class, "Is T1 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_is_related, reference_temp_is_source_class)
89
+
YN_QUESTION_NODE(reference_temp_is_source_class, "Is T2 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_is_related, reference_temp_implicit_conv)
90
+
YN_QUESTION_NODE(reference_temp_is_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.4.1", reference_temp_implicit_conv, reference_temp_user_defined_conv)
88
91
89
-
YN_QUESTION_NODE(reference_temp_is_dest_class, "Is T1 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_user_defined_conv, reference_temp_is_source_class)
90
-
YN_QUESTION_NODE(reference_temp_is_source_class, "Is T2 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_user_defined_conv, reference_temp_implicit_conv)
91
-
92
-
INSTRUCTION_NODE(reference_temp_user_defined_conv, "Consider user-defined conversions for the copy-initialization of an object of type \"cv1 T1\" by user-defined-conversion.", "[dcl.init.ref]/5.4.1")
92
+
INSTRUCTION_NODE(reference_temp_user_defined_conv, "Consider user-defined conversions for the copy-initialization of an object of type \"cv1 T1\" by user-defined conversion.", "[dcl.init.ref]/5.4.1")
93
93
-> reference_temp_user_defined_conv_is_ill_formed
94
94
95
95
YN_QUESTION_NODE(reference_temp_user_defined_conv_is_ill_formed, "Would the non-reference copy-initialization be ill-formed?", "[dcl.init.ref]/5.4.1", NEW_ILL_FORMED(), reference_temp_user_defined_conv_direct_initialize)
96
96
97
-
INSTRUCTION_NODE(reference_temp_user_defined_conv_direct_initialize, "Use the result \"E\"of the call to the conversion function, as described by non-reference copy-initialization, to direct-initialize the reference using the form \"(E)\". For this direct-initialization, user-defined conversions are not considered.", "[dcl.init.ref]/5.4.1")
97
+
INSTRUCTION_NODE(reference_temp_user_defined_conv_direct_initialize, "The result of the call to the conversion function, as described by non-reference copy-initialization, is used to direct-initialize the reference. For the direct-initialization, user-defined conversions are not considered.", "[dcl.init.ref]/5.4.1")
INSTRUCTION_NODE(reference_temp_implicit_conv, "The initializer expression is implicitly converted to a prvalue of type \"T1\".", "[dcl.init.ref]/5.4.2")
104
-
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize, "The temporary is materialized, considering the type of the prvalue to be \"cv1 T1\".", "[dcl.init.ref]/5.4.2")
105
-
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize_bind, "The reference is bound to the result.", "[dcl.init.ref]/5.4.2")
106
-
-> NEW_DONE()
107
-
}
105
+
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize, "The temporary is materialized, considering the type of the prvalue to be \"cv1 T1\".", "[dcl.init.ref]/5.4.2")
106
+
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize_bind, "Bind reference to the result.", "[dcl.init.ref]/5.4.2")
YN_QUESTION_NODE(reference_temp_implicit_conv_is_reference_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.4", reference_temp_implicit_conv_is_cv_okay, NEW_DONE())
111
+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_cv_okay, "Is cv1 at least as qualified as cv2?", "[dcl.init.ref]/5.4.3", reference_temp_implicit_conv_is_dest_rval, NEW_ILL_FORMED())
112
+
113
+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_dest_rval, "Is the destination an rvalue reference?", "[dcl.init.ref]/5.4.4", reference_temp_implicit_conv_is_source_lval, NEW_DONE())
114
+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_source_lval, "Is the initializer an lvalue?", "[dcl.init.ref]/5.4.4", NEW_ILL_FORMED(), NEW_DONE())
0 commit comments