OSDN Git Service

PR c++/53220
[pf3gnuchains/gcc-fork.git] / gcc / cp / call.c
index e543528..59e6e49 100644 (file)
@@ -5772,11 +5772,15 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
          (elttype, cp_type_quals (elttype) | TYPE_QUAL_CONST);
        array = build_array_of_n_type (elttype, len);
        array = finish_compound_literal (array, new_ctor, complain);
+       /* Take the address explicitly rather than via decay_conversion
+          to avoid the error about taking the address of a temporary.  */
+       array = cp_build_addr_expr (array, complain);
+       array = cp_convert (build_pointer_type (elttype), array);
 
        /* Build up the initializer_list object.  */
        totype = complete_type (totype);
        field = next_initializable_field (TYPE_FIELDS (totype));
-       CONSTRUCTOR_APPEND_ELT (vec, field, decay_conversion (array));
+       CONSTRUCTOR_APPEND_ELT (vec, field, array);
        field = next_initializable_field (DECL_CHAIN (field));
        CONSTRUCTOR_APPEND_ELT (vec, field, size_int (len));
        new_ctor = build_constructor (totype, vec);