On 05/20/2014 10:50 AM, Paolo Carlini wrote:
+ if (TREE_TYPE (init) != type) + { + if (BRACE_ENCLOSED_INITIALIZER_P (init) + && CP_AGGREGATE_TYPE_P (type)) + init = reshape_init (type, init, tf_warning_or_error); + init = digest_init (type, init, tf_warning_or_error);
Instead of this let's factor the relevant code out of cp_parser_late_parse_one_default_arg and use it here as well. That is,
int flags = LOOKUP_IMPLICIT; if (DIRECT_LIST_INIT_P (parsed_arg)) flags = LOOKUP_NORMAL; parsed_arg = digest_init_flags (TREE_TYPE (decl), parsed_arg, flags); if (TREE_CODE (parsed_arg) == TARGET_EXPR) /* This represents the whole initialization. */ TARGET_EXPR_DIRECT_INIT_P (parsed_arg) = true;
Jason