When a two element initializer list is nested within an enclosing initializer list, it is unclear whether it represents an <<ref_array>> or an <<ref_object>>:
In such cases, if every element consists of a string followed by a single value, then the enclosing initializer list is interpreted as an <<ref_object>>. Otherwise, it is interpreted as an <<ref_array>>.
Similarly, an initializer list for an <<ref_object>> is always interpreted as an <<ref_object>>. In such cases, the initializer list must be a list of key-value pairs. For example, the following code will not compile because `1` is not convertible to a string:
The requirement for an initializer list to be interpreted as an <<ref_object>> or <<ref_array>> when initializing such an entity only applies to the outermost initializer list; subsequent nested elements will follow the usual ambiguity resolution rules.
In all cases, the <<ref_storage_ptr>> owned by an <<ref_object>>, <<ref_array>>, or <<ref_value>> constructed from an initializer list will be propagated to each element, recursively.