|
4 | 4 | #include "common.h" |
5 | 5 |
|
6 | 6 | #define NODE_VALUE_INIT_HEAD value_initialization_head |
7 | | -#define INST_VALUE_INIT(id, ...) { INSTRUCTION_NODE(id, "The object is value-initialized.", __VA_ARGS__); } -> NODE_VALUE_INIT_HEAD |
| 7 | +#define INST_VALUE_INIT(id, ...) { INSTRUCTION_NODE(id, "Value-initialize the objecct.", __VA_ARGS__); } -> NODE_VALUE_INIT_HEAD |
8 | 8 | #define INTERNALLY_VALUE_INITS(id) { id -> NODE_VALUE_INIT_HEAD [style="dotted"]; } |
9 | 9 |
|
| 10 | +#include "default_init.dot.cpp" |
| 11 | +#include "zero_init.dot.cpp" |
| 12 | + |
10 | 13 | // [dcl.init.general]/9 |
11 | 14 | subgraph cluster_value_initialization { |
12 | 15 | INSTRUCTION_NODE(NODE_VALUE_INIT_HEAD, "Value-initialization", "[dcl.init.general]/9") |
| 16 | + -> INSTRUCTION_NODE(value_defn_t, "Let T be the type of the object.", "[dcl.init.general]/9") |
13 | 17 | -> value_is_class |
14 | 18 |
|
15 | 19 | // 9.1 |
16 | 20 | { |
17 | | - YN_QUESTION_NODE(value_is_class, "Is the type a (possibly cv-qualified) class type?", "[dcl.init.general]/9.1", value_class_find_dflt_ctor, value_is_array) |
| 21 | + YN_QUESTION_NODE(value_is_class, "Is the type a (possibly cv-qualified) class type?", "[dcl.init.general]/9.1", value_class_has_default, value_is_array) |
18 | 22 |
|
19 | | - INSTRUCTION_NODE(value_class_find_dflt_ctor, "Let C be the constructor selected to default-initialize the object, if any.", "[dcl.init.general]/9.1") |
20 | | - -> value_class_dflt_ctor_is_user_provided |
| 23 | + YN_QUESTION_NODE(value_class_has_default, "Does T have a default constructor?", "[dcl.init.general]/9.1", value_class_default_is_deleted, value_class_direct_default_init) |
| 24 | + YN_QUESTION_NODE(value_class_default_is_deleted, "Is that default constructor deleted?", "[dcl.init.general]/9.1", value_class_direct_default_init, value_class_default_is_user_provided) |
| 25 | + YN_QUESTION_NODE(value_class_default_is_user_provided, "Is that default constructor user-provided?", "[dcl.init.general]/9.1", value_class_direct_default_init, value_class_dflt_ctor_check_zero) |
21 | 26 |
|
22 | | - YN_QUESTION_NODE(value_class_dflt_ctor_is_user_provided, "Is C user-provided?", "[dcl.init.general]/9.1", value_class_dflt_ctor_zero_init, value_class_default_initialize) |
| 27 | + INSTRUCTION_NODE(value_class_direct_default_init, "Default-initialize the object.", "[dcl.init.general]/9.1") |
| 28 | + -> NODE_DEFAULT_INIT_HEAD |
23 | 29 |
|
24 | | - INSTRUCTION_NODE(value_class_dflt_ctor_zero_init, "The object is zero-initialized.", "[dcl.init.general]/9.1") |
25 | | - -> value_class_default_initialize |
| 30 | + INSTRUCTION_NODE(value_class_dflt_ctor_check_zero, "Check the semantic constraints for default-initialization.", "[dcl.init.general]/9.1") |
| 31 | + -> INSTRUCTION_NODE(value_class_dflt_ctor_zero_init, "Zero-initialize the object.", "[dcl.init.general]/9.1") |
| 32 | + -> INSTRUCTION_NODE(value_class_dflt_ctor_default_init, "Default-initialize the object.", "[dcl.init.general]/9.1") |
| 33 | + -> NODE_DEFAULT_INIT_HEAD |
26 | 34 |
|
27 | | - INSTRUCTION_NODE(value_class_default_initialize, "The object is default-initialized.", "[dcl.init.general]/9.1") |
28 | | - -> NEW_DONE() |
| 35 | + INTERNALLY_ZERO_INITS(value_class_dflt_ctor_zero_init) |
29 | 36 | } |
30 | 37 |
|
31 | 38 | // 9.3 |
32 | 39 | { |
33 | | - YN_QUESTION_NODE(value_is_array, "Is the type an array type?", "[dcl.init.general]/9.2", value_array_semantic_constraints, value_zero_initialize_fallback) |
| 40 | + YN_QUESTION_NODE(value_is_array, "Is the type an array type?", "[dcl.init.general]/9.2", value_array_initialize_elements, value_zero_initialize_fallback) |
34 | 41 |
|
35 | | - YN_QUESTION_NODE(value_array_semantic_constraints, "Are the semantic constraints of value-initializing a hypothetical element met?", "[dcl.init.general]/9.2", value_array_initialize_elements, NEW_ILL_FORMED()) |
36 | | - INSTRUCTION_NODE(value_array_initialize_elements, "Each element of the array is value-initialized.", "[dcl.init.general]/9.2") |
| 42 | + INSTRUCTION_NODE(value_array_initialize_elements, "Value-initialize each element of the array.", "[dcl.init.general]/9.2") |
37 | 43 | -> NEW_DONE() |
38 | 44 |
|
39 | 45 | INTERNALLY_VALUE_INITS(value_array_initialize_elements) |
40 | 46 | } |
41 | 47 |
|
42 | 48 | // 9.3 |
43 | 49 | { |
44 | | - INSTRUCTION_NODE(value_zero_initialize_fallback, "The object is zero-initialized.", "[dcl.init.general]/9.3") |
45 | | - -> NEW_DONE() |
| 50 | + INSTRUCTION_NODE(value_zero_initialize_fallback, "Zero-initialize the object.", "[dcl.init.general]/9.3") |
| 51 | + -> NODE_ZERO_INIT_HEAD |
46 | 52 | } |
47 | 53 | } |
48 | 54 |
|
|
0 commit comments