Skip to content

Commit 94b79a8

Browse files
committed
Add value initialization
1 parent 9757dea commit 94b79a8

1 file changed

Lines changed: 45 additions & 1 deletion

File tree

‎flowchart.dot‎

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ digraph initialization {
1818
is_char_arr_literal_init -> is_initializer_empty_parens [label="No"]
1919

2020
is_initializer_empty_parens [label="Is the initializer \"()\"?\n[dcl.init]/16.4", shape=diamond]
21-
is_initializer_empty_parens -> value_initialization [label="Yes"]
21+
is_initializer_empty_parens -> value_initialization_head [label="Yes"]
2222
is_initializer_empty_parens -> is_dest_array [label="No"]
2323

2424
is_dest_array[label="Is the destination type an array?\n[dcl.init]/16.5", shape=diamond]
@@ -407,4 +407,48 @@ digraph initialization {
407407

408408
reference_temp_implicit_conv_materialize_source_lval_ill_formed [label = "The program is ill-formed.", shape=box, style=filled, color=red, fontcolor=white]
409409
}
410+
411+
subgraph value_initialization {
412+
value_initialization_head [label="Value-initialization\n[dcl.init]/8", shape=box]
413+
value_initialization_head -> value_is_class
414+
415+
value_is_class [label="Is the type a class type?\n[dcl.init]/8.1", shape=diamond]
416+
value_is_class -> value_has_dflt_ctor [label="Yes"]
417+
value_is_class -> value_is_array [label="No"]
418+
419+
value_has_dflt_ctor [label="Does the type have a default constructor?\n[dcl.init]/8.1.1", shape=diamond]
420+
value_has_dflt_ctor -> value_default_initialize [label="No"]
421+
value_has_dflt_ctor -> value_has_deleted_dflt_ctor [label="Yes"]
422+
423+
value_has_deleted_dflt_ctor [label="Does the type have a deleted default constructor?\n[dcl.init]/8.1.1", shape=diamond]
424+
value_has_deleted_dflt_ctor -> value_default_initialize [label="Yes"]
425+
value_has_deleted_dflt_ctor -> value_has_user_dflt_ctor [label="No"]
426+
427+
value_has_user_dflt_ctor [label="Does the type have a user-provided default constructor?\n[dcl.init]/8.1.1", shape=diamond]
428+
value_has_user_dflt_ctor -> value_default_initialize [label="Yes"]
429+
value_has_user_dflt_ctor -> value_zero_initialize_class [label="No"]
430+
431+
value_zero_initialize_class [label="The object is zero-initialized.", shape=box]
432+
value_zero_initialize_class -> value_check_default
433+
434+
value_is_array [label="Is the type an array type?\n[dcl.init]/8.2", shape=diamond]
435+
value_is_array -> value_value_initialize_elements [label="Yes"]
436+
value_is_array -> value_zero_initialize_fallback [label="No"]
437+
438+
value_value_initialize_elements [label="Each element is value-initialized.", shape=box]
439+
value_value_initialize_elements -> done
440+
441+
value_zero_initialize_fallback [label="The object is zero-initialized.", shape=box]
442+
value_zero_initialize_fallback -> done
443+
444+
value_default_initialize [label="The object is default-initialized.\n[dcl.init]/8.1.*", shape=box]
445+
value_default_initialize -> done
446+
447+
value_check_default [label="The semantic constraints for default-initialization are checked.\n[dcl.init]/8.1.2", shape=box]
448+
value_check_default -> value_has_nontrivial_dflt_ctor
449+
450+
value_has_nontrivial_dflt_ctor [label="Does the type have a non-trivial default constructor?\n[dcl.init]/8.1.2", shape=diamond]
451+
value_has_nontrivial_dflt_ctor -> value_default_initialize [label="Yes"]
452+
value_has_nontrivial_dflt_ctor -> done [label="No"]
453+
}
410454
}

0 commit comments

Comments
 (0)