initialization cluster_array_initialization cluster_class_dest_initialization cluster_string_literal_initialization cluster_class_source_initialization cluster_standard_conv_seq_initialization cluster_reference_initialization cluster_value_initialization cluster_aggregate_initialization start So you want to initialize something? [dcl.init]/16 Copyright Janet Cobb 2020, Licensed CC BY 4.0 is_braced Is the initializer in braces? [dcl.init]/16.1 start->is_braced list_initialization_head List-initialization [dcl.init.list]/3 is_braced->list_initialization_head Yes is_dest_reference Is the destination type a reference type? [dcl.init]/16.2 is_braced->is_dest_reference No list_has_designated_initializer Does the braced-init-list contain a designated-initializer-list? [dcl.init.list]/3.1 list_initialization_head->list_has_designated_initializer reference_initialization_head Reference initialization [dcl.init.ref] is_dest_reference->reference_initialization_head Yes is_char_arr_init Is the destination type a char[] or a char*_t[]? [dcl.init]/16.3 is_dest_reference->is_char_arr_init No reference_dest_type_defn Let the destination type be "reference to cv1 T1". [dcl.init.ref]/5 reference_initialization_head->reference_dest_type_defn is_char_arr_literal_init Is the initializer a string literal? [dcl.init]/16.3 is_char_arr_init->is_char_arr_literal_init Yes is_initializer_empty_parens Is the initializer "()"? [dcl.init]/16.4 is_char_arr_init->is_initializer_empty_parens No is_char_arr_literal_init->is_initializer_empty_parens No string_literal_initialization_head Initialization as follows: [dcl.init.string] is_char_arr_literal_init->string_literal_initialization_head Yes value_initialization_head Value-initialization [dcl.init]/8 is_initializer_empty_parens->value_initialization_head Yes is_dest_array Is the destination type an array? [dcl.init]/16.5 is_initializer_empty_parens->is_dest_array No string_literal_verify_kind Verify array type and literal type match. string_literal_initialization_head->string_literal_verify_kind value_is_class Is the type a class type? [dcl.init]/8.1 value_initialization_head->value_is_class array_initialization_head Initialization as follows: [dcl.init]/16.5 is_dest_array->array_initialization_head Yes is_dest_class_type Is the destination type a class type? [dcl.init]/16.6 is_dest_array->is_dest_class_type No array_k_definition Let k be the number of elements in the initializers expression list.' array_initialization_head->array_k_definition class_dest_initialization_head Initialization as follows: [dcl.init]/16.6 is_dest_class_type->class_dest_initialization_head Yes is_source_class_type Is the source type a class type? [dcl.init]/16.7 is_dest_class_type->is_source_class_type No array_is_unsized Is destination type an array of unknown bound? array_k_definition->array_is_unsized array_unsized_n_defn Let n be k. array_is_unsized->array_unsized_n_defn Yes array_sized_n_defn Let n be the array size of the destination type. array_is_unsized->array_sized_n_defn No array_initialize_first_k Copy-initialize the first k array elements from the expressions in the initailizer. array_unsized_n_defn->array_initialize_first_k array_k_gt_n Is k > n? array_sized_n_defn->array_k_gt_n array_initialize_rest Value-initialize the remaining elements. array_initialize_first_k->array_initialize_rest array_k_gt_n->array_initialize_first_k No array_k_gt_n_ill_formed The program is ill-formed. array_k_gt_n->array_k_gt_n_ill_formed Yes array_initialize_rest__generated_done Done array_initialize_rest->array_initialize_rest__generated_done class_is_initializer_prvalue Is the initializer a prvalue? [dcl.init]/16.6.1 class_dest_initialization_head->class_is_initializer_prvalue class_source_initialization_head Initialized as follows: [dcl.init]/16.7 is_source_class_type->class_source_initialization_head Yes is_direct_init_for_nullptr Is the initialization direct-initialization? [dcl.init]/16.8 is_source_class_type->is_direct_init_for_nullptr No class_source_consider_conversion_functions Use overload resolution to select the best applicable conversion function. class_source_initialization_head->class_source_consider_conversion_functions is_source_type_nullptr Is the source type std::nullptr_t? [dcl.init]/16.8 is_direct_init_for_nullptr->is_source_type_nullptr Yes standard_conv_seq_initialization_head The object is initialized as follows: [dcl.init]/6.9 is_direct_init_for_nullptr->standard_conv_seq_initialization_head No is_source_type_nullptr->standard_conv_seq_initialization_head No is_dest_type_bool_for_nullptr Is the destination type bool? [dcl.init]/16.8 is_source_type_nullptr->is_dest_type_bool_for_nullptr Yes standard_conv_seq_do_init Initialize the object using the value of the initializer expression, using a standard conversion sequence if necessary, not considering any user-defined conversions. standard_conv_seq_initialization_head->standard_conv_seq_do_init is_dest_type_bool_for_nullptr->standard_conv_seq_initialization_head No nullptr_to_bool_init The bool is initialized to false. [dcl.init]/16.8 is_dest_type_bool_for_nullptr->nullptr_to_bool_init Yes nullptr_to_bool_init__generated_done Done nullptr_to_bool_init->nullptr_to_bool_init__generated_done class_is_initializer_prvalue_same_class Is the source type the same as the destination type (up to cv-qualification)? [dcl.init]/16.6.1 class_is_initializer_prvalue->class_is_initializer_prvalue_same_class Yes class_is_copy_init Is the initialization copy-initialization? [dcl.init]/16.6.2 class_is_initializer_prvalue->class_is_copy_init No class_is_initializer_prvalue_same_class->class_is_copy_init No class_initialize_by_prvalue Use the prvalue to initialize the destination object. [dcl.init]/16.6.1 class_is_initializer_prvalue_same_class->class_initialize_by_prvalue Yes class_is_copy_init_same_class Is the source type the same class as the destination type (up to cv qualification)? [dcl.init]/16.6.2 class_is_copy_init->class_is_copy_init_same_class Yes class_is_direct_init The initialization is direct-initialization. [dcl.init]/16.6.2 class_is_copy_init->class_is_direct_init No class_initialize_by_prvalue__generated_done Done class_initialize_by_prvalue->class_initialize_by_prvalue__generated_done class_consider_constructors Enumerate constructors and select best through overload resolution. [dcl.init]/16.6.2 class_is_copy_init_same_class->class_consider_constructors Yes class_is_copy_init_derived_class Is the source type a derived class of the destination type? [dcl.init]/16.6.2 class_is_copy_init_same_class->class_is_copy_init_derived_class No class_is_direct_init->class_consider_constructors class_constructors_is_resolution_successful Is overload resolution succesful? [dcl.init]/16.6.2 class_consider_constructors->class_constructors_is_resolution_successful class_is_copy_init_derived_class->class_consider_constructors Yes class_user_defined_conv_head Initialization as follows: [dcl.init]/16.6.3 class_is_copy_init_derived_class->class_user_defined_conv_head No class_user_defined_conv_overload_resolution Use overload resolution to select the best user-defined conversion that can convert from the source type to the destination type or (when a conversion function is used) to a derived class thereof. class_user_defined_conv_head->class_user_defined_conv_overload_resolution class_constructors_use_selected Use the selected constructor to initialize the object, using the expression or expression-list as argument(s). [dcl.init]/16.6.2.1 class_constructors_is_resolution_successful->class_constructors_use_selected Yes class_is_aggregate Is the destination type an aggregate class? [dcl.init]/16.6.2.2 class_constructors_is_resolution_successful->class_is_aggregate No class_constructors_use_selected__generated_done Done class_constructors_use_selected->class_constructors_use_selected__generated_done class_aggregate_is_initializer_expr_list Is the initializer a parenthesized expression-list? [dcl.init]/16.6.2.2 class_is_aggregate->class_aggregate_is_initializer_expr_list Yes class_ill_formed The program is ill-formed. class_is_aggregate->class_ill_formed No class_aggregate_is_initializer_expr_list->class_ill_formed No class_aggregate_paren_init_head Initialized as follows: [dcl.init]/16.6.2.2 class_aggregate_is_initializer_expr_list->class_aggregate_paren_init_head Yes class_aggregate_paren_n_defn Let n be the number of elements in the aggregate. class_aggregate_paren_init_head->class_aggregate_paren_n_defn class_aggregate_paren_k_defn Let k be the number of elements in the initializer's expression list.' class_aggregate_paren_n_defn->class_aggregate_paren_k_defn class_aggregate_paren_is_k_gt_n Is k > n? class_aggregate_paren_k_defn->class_aggregate_paren_is_k_gt_n class_aggregate_paren_ill_formed The program is ill-formed. class_aggregate_paren_is_k_gt_n->class_aggregate_paren_ill_formed Yes class_aggregate_paren_initialize_first_k Copy-initialize the first k elements from the expression list. class_aggregate_paren_is_k_gt_n->class_aggregate_paren_initialize_first_k No class_aggregate_paren_initialize_rest Use default member initializer or value-initialize the remaining elements. class_aggregate_paren_initialize_first_k->class_aggregate_paren_initialize_rest class_aggregate_paren_initialize_rest__generated_done Done class_aggregate_paren_initialize_rest->class_aggregate_paren_initialize_rest__generated_done class_user_defined_conv_is_possible Is the conversion ambiguous or impossible? class_user_defined_conv_overload_resolution->class_user_defined_conv_is_possible class_user_defined_conv_ill_formed The program is ill-formed. class_user_defined_conv_is_possible->class_user_defined_conv_ill_formed Yes class_user_defined_conv_do_conversion Call the selected function with the initializer-expression as its argument. class_user_defined_conv_is_possible->class_user_defined_conv_do_conversion No class_user_defined_conv_initialize Direct-initialize the destination object with the result of the conversion. class_user_defined_conv_do_conversion->class_user_defined_conv_initialize class_user_defined_conv_initialize__generated_done Done class_user_defined_conv_initialize->class_user_defined_conv_initialize__generated_done string_literal_kind_char char[] / ordinary literal string_literal_verify_kind->string_literal_kind_char string_literal_kind_char8 char8_t[] / UTF-8 literal string_literal_verify_kind->string_literal_kind_char8 string_literal_kind_char16 char16_t[] / UTF-16 literal string_literal_verify_kind->string_literal_kind_char16 string_literal_kind_char32 char32_t[] / UTF-32 literal string_literal_verify_kind->string_literal_kind_char32 string_literal_kind_wchar wchar_t[] / wide literal string_literal_verify_kind->string_literal_kind_wchar string_literal_kind_other Anything else string_literal_verify_kind->string_literal_kind_other string_literal_initialize_first Initialize the first elements of the array with successive values from the string literal. string_literal_kind_char->string_literal_initialize_first string_literal_kind_char8->string_literal_initialize_first string_literal_kind_char16->string_literal_initialize_first string_literal_kind_char32->string_literal_initialize_first string_literal_kind_wchar->string_literal_initialize_first string_literal_kind_other__generated_ill_formed The program is ill-formed. string_literal_kind_other->string_literal_kind_other__generated_ill_formed string_literal_has_too_many Are there more initializers than array elements? string_literal_initialize_first->string_literal_has_too_many string_literal_ill_formed_too_many The program is ill-formed. string_literal_has_too_many->string_literal_ill_formed_too_many Yes string_literal_initialize_rest Zero-initialize the remaining elements of the array (if any). string_literal_has_too_many->string_literal_initialize_rest No string_literal_initialize_rest__generated_done Done string_literal_initialize_rest->string_literal_initialize_rest__generated_done class_source_conversion_is_impossible Is the conversion impossible or ambiguous? class_source_consider_conversion_functions->class_source_conversion_is_impossible class_source_conversion_ill_formed The program is ill-formed. class_source_conversion_is_impossible->class_source_conversion_ill_formed Yes class_source_initialize Use the result of the conversion to convert the initializer to the object being initialized. class_source_conversion_is_impossible->class_source_initialize No class_source_initialize__generated_done Done class_source_initialize->class_source_initialize__generated_done standard_conv_seq_is_possible Is the conversion possible? standard_conv_seq_do_init->standard_conv_seq_is_possible standard_conv_seq_is_bitfield Is the object to be initialized a bit-field? standard_conv_seq_is_possible->standard_conv_seq_is_bitfield Yes standard_conv_seq_ill_formed The program is ill-formed. standard_conv_seq_is_possible->standard_conv_seq_ill_formed No standard_conv_seq_is_bitfield_in_range Is the value representable by the bit-field? standard_conv_seq_is_bitfield->standard_conv_seq_is_bitfield_in_range Yes standard_conv_seq_is_bitfield__generated_done Done standard_conv_seq_is_bitfield->standard_conv_seq_is_bitfield__generated_done No standard_conv_seq_bitfield_imp_def The value of the bit-field is implementation-defined. standard_conv_seq_is_bitfield_in_range->standard_conv_seq_bitfield_imp_def No standard_conv_seq_is_bitfield_in_range__generated_done Done standard_conv_seq_is_bitfield_in_range->standard_conv_seq_is_bitfield_in_range__generated_done Yes standard_conv_seq_bitfield_imp_def__generated_done Done standard_conv_seq_bitfield_imp_def->standard_conv_seq_bitfield_imp_def__generated_done reference_source_type_defn Let the source type be "cv2 T2". [dcl.init.ref]/5 reference_dest_type_defn->reference_source_type_defn reference_is_dest_lval Is the destination type an lvalue reference? [dcl.init.ref]/5.1 reference_source_type_defn->reference_is_dest_lval reference_dest_lval_is_source_lval Is the initializer an lvalue? [dcl.init.ref]/5.1 reference_is_dest_lval->reference_dest_lval_is_source_lval Yes reference_dest_is_lval_non_const Is the destination an lvalue reference to a non-const type? [dcl.init.ref]/5.2 reference_is_dest_lval->reference_dest_is_lval_non_const No reference_lvals_is_compatible Is cv1 T1 reference-compatibile with cv2 T2? [dcl.init.ref]/5.1 reference_dest_lval_is_source_lval->reference_lvals_is_compatible Yes reference_dest_lval_is_source_class Is T2 a class type? [dcl.init.ref]/5.1.2 reference_dest_lval_is_source_lval->reference_dest_lval_is_source_class No reference_dest_non_const_ill_formed The program is ill-formed. reference_dest_is_lval_non_const->reference_dest_non_const_ill_formed Yes reference_dest_is_volatile Is the destinations referenced type volatile-qualified' [dcl.init.ref]/5.2 reference_dest_is_lval_non_const->reference_dest_is_volatile No reference_lvals_is_compatible->reference_dest_lval_is_source_class No reference_lvals_compatible_bind The destination reference is bound to the initializer lvalue (or appropriate base). [dcl.init.ref]/5.1 reference_lvals_is_compatible->reference_lvals_compatible_bind Yes reference_dest_lval_is_source_class->reference_dest_is_lval_non_const No reference_dest_lval_source_class_is_reference_related Is T1 reference-related to T2? [dcl.init.ref]/5.1.2 reference_dest_lval_is_source_class->reference_dest_lval_source_class_is_reference_related Yes reference_lvals_compatible_bind__generated_done Done reference_lvals_compatible_bind->reference_lvals_compatible_bind__generated_done reference_dest_lval_source_class_is_reference_related->reference_dest_is_lval_non_const Yes reference_dest_lval_source_class_is_convertible Is T2 convertible to an lvalue of type cv3 T3 such that cv1 T1 is reference-compatible with cv3 T3? [dcl.init.ref]/5.1.2 reference_dest_lval_source_class_is_reference_related->reference_dest_lval_source_class_is_convertible No reference_dest_lval_source_class_is_convertible->reference_dest_is_lval_non_const No reference_class_select_conversion Select the best applicable conversion function. [dcl.init.ref]/5.1.2 reference_dest_lval_source_class_is_convertible->reference_class_select_conversion Yes reference_class_do_initialization The destination reference is bound to the result of the conversion (or appropriate base). [dcl.init.ref]/5.1 reference_class_select_conversion->reference_class_do_initialization reference_class_do_initialization__generated_done Done reference_class_do_initialization->reference_class_do_initialization__generated_done reference_dest_volatile_ill_formed The program is ill-formed. reference_dest_is_volatile->reference_dest_volatile_ill_formed Yes reference_rval_conv_source_is_rvalue Is the initializer an rvalue? [dcl.init.ref]/5.3.1 reference_dest_is_volatile->reference_rval_conv_source_is_rvalue No reference_rval_conv_source_is_rvalue_bitfield Is the initializer a bit-field? [dcl.init.ref]/5.3.1 reference_rval_conv_source_is_rvalue->reference_rval_conv_source_is_rvalue_bitfield Yes reference_rval_conv_source_is_function_lval Is the initializer a function lvalue? [dcl.init.ref]/5.3.1 reference_rval_conv_source_is_rvalue->reference_rval_conv_source_is_function_lval No reference_rval_conv_source_is_rvalue_bitfield->reference_rval_conv_source_is_function_lval Yes reference_rval_conv_source_rval_or_function_is_ref_compat Is cv1 T1 reference-compatible with cv2 T2? [dcl.init.ref]/5.3.1 reference_rval_conv_source_is_rvalue_bitfield->reference_rval_conv_source_rval_or_function_is_ref_compat No reference_rval_conv_source_is_function_lval->reference_rval_conv_source_rval_or_function_is_ref_compat Yes reference_rval_conv_source_is_class Is T2 a class type? [dcl.init.ref]/5.3.2 reference_rval_conv_source_is_function_lval->reference_rval_conv_source_is_class No reference_rval_conv_source_rval_or_function_is_ref_compat->reference_rval_conv_source_is_class No reference_rval_conv_bind_direct The converted initializer is the value of the initializer. [dcl.init.ref]/5.3 reference_rval_conv_source_rval_or_function_is_ref_compat->reference_rval_conv_bind_direct Yes reference_rval_conv_source_class_is_ref_related Is T1 reference-related to T2? [dcl.init.ref]/5.3.2 reference_rval_conv_source_is_class->reference_rval_conv_source_class_is_ref_related Yes reference_temp_is_dest_class Is T1 a class type? [dcl.init.ref]/5.4.1 reference_rval_conv_source_is_class->reference_temp_is_dest_class No reference_rval_conv_is_converted_prval Is the converted initializer a prvalue? [dcl.init.ref]/5.3 reference_rval_conv_bind_direct->reference_rval_conv_is_converted_prval reference_rval_conv_source_class_is_ref_related->reference_temp_is_dest_class Yes 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"? reference_rval_conv_source_class_is_ref_related->reference_rval_conv_source_class_convertible_target No reference_temp_is_related Is T1 reference-related to T2? [dcl.init.ref]/5.4.1 reference_temp_is_dest_class->reference_temp_is_related Yes reference_temp_is_source_class Is T2 a class type? [dcl.init.ref]/5.4.1 reference_temp_is_dest_class->reference_temp_is_source_class No reference_rval_conv_source_class_convertible_target->reference_temp_is_dest_class No reference_rval_conv_bind_converted The converted initializer is the result of the conversion. [dcl.init.ref]/5.3 reference_rval_conv_source_class_convertible_target->reference_rval_conv_bind_converted Yes reference_rval_conv_bind_converted->reference_rval_conv_is_converted_prval reference_rval_conv_prval_adjust_type Its type T4 is adjusted to "cv1 T4". [dcl.init.ref]/5.3 reference_rval_conv_is_converted_prval->reference_rval_conv_prval_adjust_type Yes reference_rval_conv_bind_glval The destination reference is bound to the resulting glvalue. [dcl.init.ref]/5.3 reference_rval_conv_is_converted_prval->reference_rval_conv_bind_glval No reference_rval_conv_prval_materialize The prvalue is materialized. [dcl.init.ref]/5.3 reference_rval_conv_prval_adjust_type->reference_rval_conv_prval_materialize reference_rval_conv_bind_glval__generated_done Done reference_rval_conv_bind_glval->reference_rval_conv_bind_glval__generated_done reference_rval_conv_prval_materialize->reference_rval_conv_bind_glval reference_temp_implicit_conv The initializer expression is implicitly converted to a prvalue of type "cv1 T1". [dcl.init.ref]/5.4.2 reference_temp_is_related->reference_temp_implicit_conv Yes 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 reference_temp_is_related->reference_temp_user_defined_conv No reference_temp_is_source_class->reference_temp_is_related Yes reference_temp_is_source_class->reference_temp_implicit_conv No reference_temp_implicit_conv_materialize The temporary is materialized. [dcl.init.ref]/5.4.2 reference_temp_implicit_conv->reference_temp_implicit_conv_materialize reference_temp_user_defined_conv_is_ill_formed Would the non-reference copy-initialization be ill-formed? [dcl.init.ref]/5.4.1 reference_temp_user_defined_conv->reference_temp_user_defined_conv_is_ill_formed reference_temp_user_defined_conv_ill_formed The program is ill-formed. reference_temp_user_defined_conv_is_ill_formed->reference_temp_user_defined_conv_ill_formed Yes 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 reference_temp_user_defined_conv_is_ill_formed->reference_temp_user_defined_conv_direct_initialize No reference_temp_user_defined_conv_direct_initialize__generated_done Done reference_temp_user_defined_conv_direct_initialize->reference_temp_user_defined_conv_direct_initialize__generated_done reference_temp_implicit_conv_materialize_bind The reference is bound to the result. [dcl.init.ref]/5.4.2 reference_temp_implicit_conv_materialize->reference_temp_implicit_conv_materialize_bind reference_temp_implicit_conv_materialize_is_reference_related Is T1 reference-related to T2? [dcl.init.ref]/5.4 reference_temp_implicit_conv_materialize_bind->reference_temp_implicit_conv_materialize_is_reference_related reference_temp_implicit_conv_materialize_is_cv_okay Is cv1 at least as qualified as cv2? [dcl.init.ref]/5.4.3 reference_temp_implicit_conv_materialize_is_reference_related->reference_temp_implicit_conv_materialize_is_cv_okay Yes reference_temp_implicit_conv_materialize_is_reference_related__generated_done Done reference_temp_implicit_conv_materialize_is_reference_related->reference_temp_implicit_conv_materialize_is_reference_related__generated_done No reference_temp_implicit_conv_materialize_is_dest_rval Is the destination an rvalue reference? [dcl.init.ref]/5.4.3 reference_temp_implicit_conv_materialize_is_cv_okay->reference_temp_implicit_conv_materialize_is_dest_rval Yes reference_temp_implicit_conv_materialize_cv_ill_formed The program is ill-formed. reference_temp_implicit_conv_materialize_is_cv_okay->reference_temp_implicit_conv_materialize_cv_ill_formed No reference_temp_implicit_conv_materialize_is_source_lval Is the initializer an lvalue? [dcl.init.ref]/5.4.4 reference_temp_implicit_conv_materialize_is_dest_rval->reference_temp_implicit_conv_materialize_is_source_lval Yes reference_temp_implicit_conv_materialize_is_dest_rval__generated_done Done reference_temp_implicit_conv_materialize_is_dest_rval->reference_temp_implicit_conv_materialize_is_dest_rval__generated_done No reference_temp_implicit_conv_materialize_is_source_lval__generated_ill_formed The program is ill-formed. reference_temp_implicit_conv_materialize_is_source_lval->reference_temp_implicit_conv_materialize_is_source_lval__generated_ill_formed Yes reference_temp_implicit_conv_materialize_is_source_lval__generated_done Done reference_temp_implicit_conv_materialize_is_source_lval->reference_temp_implicit_conv_materialize_is_source_lval__generated_done No value_has_dflt_ctor Does the type have a default constructor? [dcl.init]/8.1.1 value_is_class->value_has_dflt_ctor Yes value_is_array Is the type an array type? [dcl.init]/8.2 value_is_class->value_is_array No value_has_deleted_dflt_ctor Does the type have a deleted default constructor? [dcl.init]/8.1.1 value_has_dflt_ctor->value_has_deleted_dflt_ctor Yes value_default_initialize The object is default-initialized. [dcl.init]/8.1.* value_has_dflt_ctor->value_default_initialize No value_value_initialize_elements Each element is value-initialized. value_is_array->value_value_initialize_elements Yes value_zero_initialize_fallback The object is zero-initialized. value_is_array->value_zero_initialize_fallback No value_has_deleted_dflt_ctor->value_default_initialize Yes value_has_user_dflt_ctor Does the type have a user-provided default constructor? [dcl.init]/8.1.1 value_has_deleted_dflt_ctor->value_has_user_dflt_ctor No value_default_initialize__generated_done Done value_default_initialize->value_default_initialize__generated_done value_has_user_dflt_ctor->value_default_initialize Yes value_zero_initialize_class The object is zero-initialized. value_has_user_dflt_ctor->value_zero_initialize_class No value_check_default The semantic constraints for default-initialization are checked. [dcl.init]/8.1.2 value_zero_initialize_class->value_check_default value_has_nontrivial_dflt_ctor Does the type have a non-trivial default constructor? [dcl.init]/8.1.2 value_check_default->value_has_nontrivial_dflt_ctor value_value_initialize_elements__generated_done Done value_value_initialize_elements->value_value_initialize_elements__generated_done value_zero_initialize_fallback__generated_done Done value_zero_initialize_fallback->value_zero_initialize_fallback__generated_done value_has_nontrivial_dflt_ctor->value_default_initialize Yes value_has_nontrivial_dflt_ctor__generated_done Done value_has_nontrivial_dflt_ctor->value_has_nontrivial_dflt_ctor__generated_done No list_designated_initalizer_is_aggregate Is the type an aggregate class? [dcl.init.list]/3.1 list_has_designated_initializer->list_designated_initalizer_is_aggregate Yes list_is_aggregate_class Is the type an aggregate class? [dcl.init.list]/3.2 list_has_designated_initializer->list_is_aggregate_class No 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_initalizer_is_aggregate->list_designated_initializer_are_identifiers_valid Yes list_designated_initalizer_nonaggregate_ill_formed The program is ill-formed. list_designated_initalizer_is_aggregate->list_designated_initalizer_nonaggregate_ill_formed No list_aggregate_is_list_singleton Does the initializer list have a single element? [dcl.init.list]/3.2 list_is_aggregate_class->list_aggregate_is_list_singleton Yes list_is_type_char_array Is the type a character array? [dcl.init.list]/3.3 list_is_aggregate_class->list_is_type_char_array No list_designated_initializer_aggregate_init Aggregate initialization is performed. [dcl.init.list]/3.1 list_designated_initializer_are_identifiers_valid->list_designated_initializer_aggregate_init Yes list_designated_initalizer_initializers_ill_formed The program is ill-formed. list_designated_initializer_are_identifiers_valid->list_designated_initalizer_initializers_ill_formed No aggregate_initialization_head Aggregate initialization [dcl.init.aggr] list_designated_initializer_aggregate_init->aggregate_initialization_head aggregate_determine_elements Determine the elements of the aggregate. [dcl.init.aggr]/2 aggregate_initialization_head->aggregate_determine_elements list_aggregate_is_list_singleton->list_is_type_char_array No list_aggregate_singleton_is_type_valid Does the sole element have type "cv U" where U is the initialized type or a type derived of it? list_aggregate_is_list_singleton->list_aggregate_singleton_is_type_valid Yes list_char_array_is_singleton Does the initializer list have a single element? [dcl.init.list/]3.3 list_is_type_char_array->list_char_array_is_singleton Yes list_is_aggregate Is the type an aggregate? [dcl.init.list]/3.4 list_is_type_char_array->list_is_aggregate No list_aggregate_singleton_is_type_valid->list_is_type_char_array No list_aggregate_singleton_type_init_type What is the type of initialization? [dcl.init.list]/3.2 list_aggregate_singleton_is_type_valid->list_aggregate_singleton_type_init_type Yes list_aggregate_singleton_type_copy The object is copy-initialized from the sole element. [dcl.init.list]/3.2 list_aggregate_singleton_type_init_type->list_aggregate_singleton_type_copy copy-list-initialization list_aggregate_singleton_type_direct The object is direct-initialized from the sole element. [dcl.init.list]/3.2 list_aggregate_singleton_type_init_type->list_aggregate_singleton_type_direct direct-list-initialization list_aggregate_singleton_type_copy__generated_done Done list_aggregate_singleton_type_copy->list_aggregate_singleton_type_copy__generated_done list_aggregate_singleton_type_direct__generated_done Done list_aggregate_singleton_type_direct->list_aggregate_singleton_type_direct__generated_done list_char_array_is_singleton->list_is_aggregate No list_char_array_singleton_is_typed Is that element an appropriately-typed string-literal? [dcl.init.list]/3.3 list_char_array_is_singleton->list_char_array_singleton_is_typed Yes list_aggregate_aggregate_initialization Aggregate initialization is performed. [dcl.init.list]/3.4 list_is_aggregate->list_aggregate_aggregate_initialization Yes list_is_list_empty Is the initializer list empty? [dcl.init.list]/3.5 list_is_aggregate->list_is_list_empty No list_char_array_singleton_is_typed->list_is_aggregate No list_char_array_string_literal_init Initialization as in [dcl.init.string] [dcl.init.list]/3.3 list_char_array_singleton_is_typed->list_char_array_string_literal_init Yes list_char_array_string_literal_init->string_literal_initialization_head list_aggregate_aggregate_initialization->aggregate_initialization_head list_empty_is_class Is the destination type a class type? [dcl.init.list]/3.5 list_is_list_empty->list_empty_is_class Yes list_dest_is_initializer_list Is the type a specialization of std::initializer_list? [dcl.init.list]/3.6 list_is_list_empty->list_dest_is_initializer_list No list_empty_is_class->list_dest_is_initializer_list No list_empty_has_default_constructor Does the class have a default constructor? [dcl.init.list]/3.5 list_empty_is_class->list_empty_has_default_constructor Yes list_initializer_list_init Initialized as follows: [dcl.init.list]/5 list_dest_is_initializer_list->list_initializer_list_init Yes list_is_class Is the type a class type? [dcl.init.list]/3.7 list_dest_is_initializer_list->list_is_class No list_empty_has_default_constructor->list_dest_is_initializer_list No list_empty_value_initialize The object is value-initialized. [dcl.init.list]/3.5 list_empty_has_default_constructor->list_empty_value_initialize Yes list_empty_value_initialize__generated_done Done list_empty_value_initialize->list_empty_value_initialize__generated_done list_initializer_list_n_defn Let N be the number of elements in the initalizer list. list_initializer_list_init->list_initializer_list_n_defn list_class_ctors Constructors are considered, and the best match is selected through overload resolution. [dcl.init.list]/3.7 list_is_class->list_class_ctors Yes list_is_enum Is the type an enumeration? [dcl.init.list]/3.8 list_is_class->list_is_enum No list_initializer_list_materialize_array Where type is std::initializer_list<E>, a prvalue of type "array of N const E" is materialized. list_initializer_list_n_defn->list_initializer_list_materialize_array list_initializer_list_init_array Each element of the array is copy-initialized with the corresponding element of the initializer list. list_initializer_list_materialize_array->list_initializer_list_init_array list_initializer_list_is_narrowing Is a narrowing conversion required to initialize any of the elements? list_initializer_list_init_array->list_initializer_list_is_narrowing list_initializer_list_narrowing_ill_formed The program is ill-formed. list_initializer_list_is_narrowing->list_initializer_list_narrowing_ill_formed Yes list_initializer_list_init_object The initializer_list is constructed to refer to the materialized array. list_initializer_list_is_narrowing->list_initializer_list_init_object No list_initializer_list_init_object__generated_done Done list_initializer_list_init_object->list_initializer_list_init_object__generated_done list_class_is_narrowing Is a narrowing conversion required to convert any of the arguments? [dcl.init.list]/3.7 list_class_ctors->list_class_is_narrowing list_enum_is_fixed Does the enumeration have fixed underlying type? [dcl.init.list]/3.8 list_is_enum->list_enum_is_fixed Yes list_final_is_singleton Does the initializer list have a single element? [dcl.init.list]/3.9 list_is_enum->list_final_is_singleton No list_class_is_narrowing__generated_ill_formed The program is ill-formed. list_class_is_narrowing->list_class_is_narrowing__generated_ill_formed Yes list_class_is_narrowing__generated_done Done list_class_is_narrowing->list_class_is_narrowing__generated_done No list_enum_is_fixed->list_final_is_singleton No list_enum_underlying_defn Let U be the underlying type. [dcl.init.list]/3.8 list_enum_is_fixed->list_enum_underlying_defn Yes list_final_singleton_type_defn Let E be the type of that element. [dcl.init.list]/3.9 list_final_is_singleton->list_final_singleton_type_defn Yes list_ref_prvalue_is_ref Is the destination type a reference type? [dcl.init.list]/3.10 list_final_is_singleton->list_ref_prvalue_is_ref No list_enum_is_singleton Does the initializer list have a single element? [dcl.init.list]/3.8 list_enum_underlying_defn->list_enum_is_singleton list_enum_is_singleton->list_final_is_singleton No list_enum_elem_defn Let v be that element. [dcl.init.list]/3.8 list_enum_is_singleton->list_enum_elem_defn Yes list_enum_is_convertible Can v be implicitly converted to U? [dcl.init.list]/3.8 list_enum_elem_defn->list_enum_is_convertible list_enum_is_convertible->list_final_is_singleton No list_enum_is_direct Is the initialization direct-list-initialization? [dcl.init.list]/3.8 list_enum_is_convertible->list_enum_is_direct Yes list_enum_is_direct->list_final_is_singleton No list_enum_is_narrowing Is a narrowing conversion required to convert v to U? [dcl.init.list]/3.8 list_enum_is_direct->list_enum_is_narrowing Yes list_enum_narrowing_ill_formed The program is ill-formed. list_enum_is_narrowing->list_enum_narrowing_ill_formed Yes list_enum_initialization The object is initialized with the value T(u). list_enum_is_narrowing->list_enum_initialization No list_enum_initialization__generated_done Done list_enum_initialization->list_enum_initialization__generated_done list_final_singleton_is_dest_ref Is the destination type a reference? [dcl.init.list]/3.9 list_final_singleton_type_defn->list_final_singleton_is_dest_ref list_ref_prvalue_prvalue_generated A prvalue is generated. [dcl.init.list]/3.10 list_ref_prvalue_is_ref->list_ref_prvalue_prvalue_generated Yes list_final_is_empty Is the initializer list empty? [dcl.init.list]/3.11 list_ref_prvalue_is_ref->list_final_is_empty No list_final_singleton_is_dest_ref_related Is the destination types referenced type reference-related to E?' [dcl.init.list]/3.9 list_final_singleton_is_dest_ref->list_final_singleton_is_dest_ref_related Yes list_final_singleton_type What is the type of initialization? [dcl.init.list]/3.9 list_final_singleton_is_dest_ref->list_final_singleton_type No list_final_singleton_is_dest_ref_related->list_ref_prvalue_is_ref No list_final_singleton_is_dest_ref_related->list_final_singleton_type Yes list_final_singleton_direct The destination is initialized by direct-initialization from the element. [dcl.init.list]/3.9 list_final_singleton_type->list_final_singleton_direct direct-list-initialization list_final_singleton_copy The destination is initialized by copy-initialization from the element. [dcl.init.list]/3.9 list_final_singleton_type->list_final_singleton_copy copy-list-initialization list_final_singleton_is_narrowing Is a narrowing conversion required to convert the element to the destination type? [dcl.init.list]/3.9 list_final_singleton_direct->list_final_singleton_is_narrowing list_final_singleton_copy->list_final_singleton_is_narrowing list_final_singleton_is_narrowing__generated_ill_formed The program is ill-formed. list_final_singleton_is_narrowing->list_final_singleton_is_narrowing__generated_ill_formed Yes list_final_singleton_is_narrowing__generated_done Done list_final_singleton_is_narrowing->list_final_singleton_is_narrowing__generated_done No list_ref_prvalue_type_is_unknown_bound Is the destination type an array of unknown bound? [dcl.init.list]/3.10 list_ref_prvalue_prvalue_generated->list_ref_prvalue_type_is_unknown_bound list_final_empty_value_init The object is value-initialized. [dcl.init.list]/3.12 list_final_is_empty->list_final_empty_value_init Yes list_nothing_else_ill_formed The program is ill-formed. list_final_is_empty->list_nothing_else_ill_formed No list_ref_prvalue_type_unknown_bound The type of the prvalue is the type of x in U x[] H, where H is the initializer list. [dcl.init.list]/3.10 list_ref_prvalue_type_is_unknown_bound->list_ref_prvalue_type_unknown_bound Yes list_ref_prvalue_type_normal The type of the prvalue is the type referenced by the destination type. [dcl.init.list]/3.10 list_ref_prvalue_type_is_unknown_bound->list_ref_prvalue_type_normal No list_ref_prvalue_init_prvalue The prvalue initializes a result object by copy-list-initialization. [dcl.init.list]/3.10 list_ref_prvalue_type_unknown_bound->list_ref_prvalue_init_prvalue list_ref_prvalue_type_normal->list_ref_prvalue_init_prvalue list_ref_prvalue_init_ref The reference is direct-initialized by the prvalue. [dcl.init.list]/3.10 list_ref_prvalue_init_prvalue->list_ref_prvalue_init_ref list_ref_prvalue_init_ref__generated_done Done list_ref_prvalue_init_ref->list_ref_prvalue_init_ref__generated_done list_final_empty_value_init__generated_done Done list_final_empty_value_init->list_final_empty_value_init__generated_done aggregate_elements_type What is the type of the aggregate? [dcl.init.aggr]/2 aggregate_determine_elements->aggregate_elements_type aggregate_elements_array The elements are the array elements in increasing subscript order. [dcl.init.aggr]/2.1 aggregate_elements_type->aggregate_elements_array an array type aggregate_elements_class The elements are the direct base classes in declaration order, followed by the direct non-static data members that are not members of an anonymous union, in declaration order. [dcl.init.aggr]/2.2 aggregate_elements_type->aggregate_elements_class a class type aggregate_determine_explicit_init_elems Determine the explicitly initialized elements [dcl.init.aggr]/3 aggregate_elements_array->aggregate_determine_explicit_init_elems aggregate_elements_class->aggregate_determine_explicit_init_elems aggregate_explicit_is_designated Is the initializer list a designated-initializer-list? [dcl.init.aggr]/3.1 aggregate_determine_explicit_init_elems->aggregate_explicit_is_designated aggregate_explicit_desginated_is_class Is the aggregate of class type? [dcl.init.aggr]/3.1 aggregate_explicit_is_designated->aggregate_explicit_desginated_is_class Yes aggregate_explicit_is_init_list Is the initializer list an initializer-list (i.e. does it have at least one element)? [dcl.init.aggr]/3.2 aggregate_explicit_is_designated->aggregate_explicit_is_init_list No aggregate_explicit_designated_are_designators_valid Does each designators identifier name a direct non-static data member of that class? [dcl.init.aggr]/3.1 aggregate_explicit_desginated_is_class->aggregate_explicit_designated_are_designators_valid Yes aggregate_explicit_desginated_is_class__generated_ill_formed The program is ill-formed. aggregate_explicit_desginated_is_class->aggregate_explicit_desginated_is_class__generated_ill_formed No aggregate_explicit_init_list The explicitly initialized elements are the first elements of the aggregate, matching the number in the initializer list. [dcl.init.aggr]/3.2 aggregate_explicit_is_init_list->aggregate_explicit_init_list Yes aggregate_explicit_empty The initializer list is "{}", and there are no explicitly initialized elements. [dcl.init.aggr]/3.3 aggregate_explicit_is_init_list->aggregate_explicit_empty No aggregate_explicit_desginated The explicitly initialized elements are those named by the designator's initializers (or those that contain the named elements) [dcl.init.aggr]/3.1 aggregate_explicit_designated_are_designators_valid->aggregate_explicit_desginated Yes aggregate_explicit_designated_are_designators_valid__generated_ill_formed The program is ill-formed. aggregate_explicit_designated_are_designators_valid->aggregate_explicit_designated_are_designators_valid__generated_ill_formed No aggregate_explicit_is_union Is the aggregate a union? [dcl.init.aggr]/19 aggregate_explicit_desginated->aggregate_explicit_is_union aggregate_explicit_list_union_is_excess_explicit_init Is there more than one explicitly initialized element? [dcl.init.aggr]/19 aggregate_explicit_is_union->aggregate_explicit_list_union_is_excess_explicit_init Yes aggregate_initialize_explicit The explicitly initialized elements are initialized as follows: [dcl.init.aggr]/4 aggregate_explicit_is_union->aggregate_initialize_explicit No aggregate_explicit_init_list->aggregate_explicit_is_union aggregate_explicit_empty->aggregate_explicit_is_union aggregate_explicit_list_union_is_excess_explicit_init->aggregate_initialize_explicit No aggregate_explicit_list_union_is_excess_explicit_init__generated_ill_formed The program is ill-formed. aggregate_explicit_list_union_is_excess_explicit_init->aggregate_explicit_list_union_is_excess_explicit_init__generated_ill_formed Yes aggregate_initialize_explicit_foreach For each explicitly initialized element... [dcl.init.aggr]/4 aggregate_initialize_explicit->aggregate_initialize_explicit_foreach aggregate_initialize_explicit_is_anon_union Is the element an anonymous union object? [dcl.init.aggr]/4.1 aggregate_initialize_explicit_foreach->aggregate_initialize_explicit_is_anon_union aggregate_initialize_explicit_union_is_designated Is the initializer-list a designated-initializer-list? [dcl.init.aggr]/4.1 aggregate_initialize_explicit_is_anon_union->aggregate_initialize_explicit_union_is_designated Yes aggregate_initialize_explicit_copy_kind What is the kind of brace initializer? [dcl.init.aggr]/4.2 aggregate_initialize_explicit_is_anon_union->aggregate_initialize_explicit_copy_kind No aggregate_initialize_explicit_union_is_designated->aggregate_initialize_explicit_copy_kind No aggregate_initialize_explicit_union_is_duplicate_designator Is there more than one designator that names a member of that anonymous union? [dcl.init.aggr]/4.1 aggregate_initialize_explicit_union_is_designated->aggregate_initialize_explicit_union_is_duplicate_designator Yes aggregate_initialize_explicit_copy_init_list The element is copy-initialized from the corresponding initializer-clause. [dcl.init.aggr]/4.2 aggregate_initialize_explicit_copy_kind->aggregate_initialize_explicit_copy_init_list initializer-list aggregate_initialize_explicit_copy_designated The element is initialized with the brace-or-equal initializer of the corresponding designated-initializer-clause. [dcl.init.aggr]/4.2 aggregate_initialize_explicit_copy_kind->aggregate_initialize_explicit_copy_designated designated-initializer-list aggregate_initialize_explicit_union_is_duplicate_designator__generated_ill_formed The program is ill-formed. aggregate_initialize_explicit_union_is_duplicate_designator->aggregate_initialize_explicit_union_is_duplicate_designator__generated_ill_formed Yes aggregate_initialize_explicit_union_init The anonymous union object is initialized by { D }, where D is the designated-initializer-clause naming a member of the anonymous union object. aggregate_initialize_explicit_union_is_duplicate_designator->aggregate_initialize_explicit_union_init No aggregate_initialize_explicit_repeat_next Repeat with the next explicitly initialized element. aggregate_initialize_explicit_union_init->aggregate_initialize_explicit_repeat_next aggregate_initialize_nonexplicit_is_union Is the aggregate a union? [dcl.init.aggr]/5 aggregate_initialize_explicit_repeat_next->aggregate_initialize_nonexplicit_is_union Once done with all explicitly initialized elements 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_copy_init_list->aggregate_initialize_explicit_is_narrowing_checked aggregate_initialize_explicit_copy_designated->aggregate_initialize_explicit_is_narrowing_checked aggregate_initialize_explicit_is_narrowing_checked->aggregate_initialize_explicit_repeat_next No aggregate_initialize_explicit_is_narrowing Is a narrowing conversion required to convert the expression? [dcl.init.aggr]/4.2 aggregate_initialize_explicit_is_narrowing_checked->aggregate_initialize_explicit_is_narrowing Yes aggregate_initialize_explicit_is_narrowing->aggregate_initialize_explicit_repeat_next No aggregate_initialize_explicit_is_narrowing__generated_ill_formed The program is ill-formed. aggregate_initialize_explicit_is_narrowing->aggregate_initialize_explicit_is_narrowing__generated_ill_formed Yes aggregate_initialize_nonexplicit_union_is_list_empty Is the initializer list empty? [dcl.init.aggr]/5 aggregate_initialize_nonexplicit_is_union->aggregate_initialize_nonexplicit_union_is_list_empty Yes aggregate_initialize_nonexplicit_nonunion For each non-explicitly-initialized element: [dcl.init.aggr]/5 aggregate_initialize_nonexplicit_is_union->aggregate_initialize_nonexplicit_nonunion No aggregate_initialize_nonexplicit_union_empty_has_dflt Does any variant member of the union have a default member initializer? [dcl.init.aggr]/5.4 aggregate_initialize_nonexplicit_union_is_list_empty->aggregate_initialize_nonexplicit_union_empty_has_dflt Yes aggregate_initialize_nonexplicit_union_is_list_empty__generated_done Done aggregate_initialize_nonexplicit_union_is_list_empty->aggregate_initialize_nonexplicit_union_is_list_empty__generated_done No aggregate_initialize_nonexplicit_nonunion_has_dflt_mem_init Does the element have a default member initializer? [dcl.init.aggr]/5.1 aggregate_initialize_nonexplicit_nonunion->aggregate_initialize_nonexplicit_nonunion_has_dflt_mem_init aggregate_initialize_nonexplicit_nonunion_dflt_mem_init The element is initialized from that initializer. [dcl.init.aggr]/5.1 aggregate_initialize_nonexplicit_nonunion_has_dflt_mem_init->aggregate_initialize_nonexplicit_nonunion_dflt_mem_init Yes aggregate_initialize_nonexplicit_nonunion_is_reference Is the element a reference? [dcl.init.aggr]/5.2 aggregate_initialize_nonexplicit_nonunion_has_dflt_mem_init->aggregate_initialize_nonexplicit_nonunion_is_reference No aggregate_initialize_nonexplicit_nonunion_repeat_next Repeat with the next non-explicitly-initialized element. aggregate_initialize_nonexplicit_nonunion_dflt_mem_init->aggregate_initialize_nonexplicit_nonunion_repeat_next aggregate_initialize_nonexplicit_nonunion_copy_init The element is copy-initialized from an empty initializer list. [dcl.init.aggr]/5.2 aggregate_initialize_nonexplicit_nonunion_is_reference->aggregate_initialize_nonexplicit_nonunion_copy_init No aggregate_initialize_nonexplicit_nonunion_is_reference__generated_ill_formed The program is ill-formed. aggregate_initialize_nonexplicit_nonunion_is_reference->aggregate_initialize_nonexplicit_nonunion_is_reference__generated_ill_formed Yes aggregate_initialize_nonexplicit_nonunion_repeat_next__generated_done Done aggregate_initialize_nonexplicit_nonunion_repeat_next->aggregate_initialize_nonexplicit_nonunion_repeat_next__generated_done Once done with all explicitly initialized elements aggregate_initialize_nonexplicit_nonunion_copy_init->aggregate_initialize_nonexplicit_nonunion_repeat_next aggregate_initialize_nonexplicit_union_dflt_mem That member is initialized from its default member initializer. [dcl.init.aggr]/5.4 aggregate_initialize_nonexplicit_union_empty_has_dflt->aggregate_initialize_nonexplicit_union_dflt_mem Yes aggregate_initialize_nonexplicit_union_first_mem The first member of the union (if any) is copy-initialized from an empty initializer list. [dcl.init.aggr]/5.5 aggregate_initialize_nonexplicit_union_empty_has_dflt->aggregate_initialize_nonexplicit_union_first_mem No aggregate_initialize_nonexplicit_union_dflt_mem__generated_done Done aggregate_initialize_nonexplicit_union_dflt_mem->aggregate_initialize_nonexplicit_union_dflt_mem__generated_done aggregate_initialize_nonexplicit_union_first_mem__generated_done Done aggregate_initialize_nonexplicit_union_first_mem->aggregate_initialize_nonexplicit_union_first_mem__generated_done