mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
5b81a980e6
commit
29bb9224fc
|
|
@ -4,6 +4,10 @@
|
||||||
* call.c (convert_for_arg_passing): Only give warnings with tf_warning.
|
* call.c (convert_for_arg_passing): Only give warnings with tf_warning.
|
||||||
* typeck.c (convert_for_assignment): Likewise.
|
* 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>
|
2019-01-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
Update copyright years.
|
Update copyright years.
|
||||||
|
|
|
||||||
|
|
@ -2146,11 +2146,20 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
else if (!parms)
|
else if (!parms)
|
||||||
|
{
|
||||||
|
/* 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)
|
if (complain & tf_error)
|
||||||
error ("cannot deduce template arguments for %qT from ()", anode);
|
error ("cannot deduce template arguments for %qT from ()",
|
||||||
|
anode);
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
type = do_auto_deduction (type, parms, anode, complain,
|
type = do_auto_deduction (type, parms, anode, complain,
|
||||||
adc_variable_type);
|
adc_variable_type);
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@
|
||||||
PR c++/88612 - ICE with -Waddress-of-packed-member.
|
PR c++/88612 - ICE with -Waddress-of-packed-member.
|
||||||
* g++.dg/warn/Waddress-of-packed-member1.C: New test.
|
* 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>
|
2019-01-02 Martin Sebor <msebor@redhat.com>
|
||||||
Jeff Law <law@redhat.com>
|
Jeff Law <law@redhat.com>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue