@@ -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