Commit be2b93e6 by Jason Merrill Committed by Jason Merrill

* decl.c (cp_finish_decl): Don't change init for auto deduction.

From-SVN: r163896
parent 40013af7
2010-09-06 Jason Merrill <jason@redhat.com>
* decl.c (cp_finish_decl): Don't change init for auto deduction.
* pt.c (fold_non_dependent_expr_sfinae): Split out from...
(fold_non_dependent_expr): ...here.
(convert_nontype_argument): Use it. Take complain parm.
......
......@@ -5681,18 +5681,21 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
auto_node = type_uses_auto (type);
if (auto_node)
{
tree d_init;
if (init == NULL_TREE)
{
error ("declaration of %q#D has no initializer", decl);
TREE_TYPE (decl) = error_mark_node;
return;
}
if (TREE_CODE (init) == TREE_LIST)
init = build_x_compound_expr_from_list (init, ELK_INIT,
d_init = init;
if (TREE_CODE (d_init) == TREE_LIST)
d_init = build_x_compound_expr_from_list (d_init, ELK_INIT,
tf_warning_or_error);
if (describable_type (init))
if (describable_type (d_init))
{
type = TREE_TYPE (decl) = do_auto_deduction (type, init, auto_node);
type = TREE_TYPE (decl) = do_auto_deduction (type, d_init,
auto_node);
if (type == error_mark_node)
return;
}
......
2010-09-06 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/auto19.C: New.
* g++.dg/template/sfinae25.C: New.
* g++.dg/template/char1.C: Expect warning.
* g++.dg/template/nontype10.C: Likewise.
......
// { dg-options -std=c++0x }
struct Explicit {
Explicit() = default; // Line 2
explicit Explicit(const Explicit&){}
} ex;
auto ex2(ex); // Line 6
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment