Commit 29bb9224 by Marek Polacek Committed by Marek Polacek

PR c++/88631 - CTAD failing for value-initialization.

	* typeck2.c (build_functional_cast): Try deducing the template
	arguments even if there are no arguments to deduce from.

	* g++.dg/cpp1z/class-deduction59.C: New test.

From-SVN: r267533
parent 5b81a980
......@@ -4,6 +4,10 @@
* call.c (convert_for_arg_passing): Only give warnings with tf_warning.
* typeck.c (convert_for_assignment): Likewise.
PR c++/88631 - CTAD failing for value-initialization.
* typeck2.c (build_functional_cast): Try deducing the template
arguments even if there are no arguments to deduce from.
2019-01-01 Jakub Jelinek <jakub@redhat.com>
Update copyright years.
......
......@@ -2147,9 +2147,18 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
}
else if (!parms)
{
if (complain & tf_error)
error ("cannot deduce template arguments for %qT from ()", anode);
return error_mark_node;
/* Even if there are no parameters, we might be able to deduce from
default template arguments. Pass TF_NONE so that we don't
generate redundant diagnostics. */
type = do_auto_deduction (type, parms, anode, tf_none,
adc_variable_type);
if (type == error_mark_node)
{
if (complain & tf_error)
error ("cannot deduce template arguments for %qT from ()",
anode);
return error_mark_node;
}
}
else
type = do_auto_deduction (type, parms, anode, complain,
......
......@@ -3,6 +3,9 @@
PR c++/88612 - ICE with -Waddress-of-packed-member.
* g++.dg/warn/Waddress-of-packed-member1.C: New test.
PR c++/88631 - CTAD failing for value-initialization.
* g++.dg/cpp1z/class-deduction59.C: New test.
2019-01-02 Martin Sebor <msebor@redhat.com>
Jeff Law <law@redhat.com>
......
// PR c++/88631
// { dg-do compile { target c++17 } }
template<class T = void>
class A { };
int main()
{
auto x = A();
auto x2 = A{};
A y;
}
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