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.
|
||||
* 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.
|
||||
|
|
|
|||
|
|
@ -2146,11 +2146,20 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
|
|||
return error_mark_node;
|
||||
}
|
||||
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)
|
||||
error ("cannot deduce template arguments for %qT from ()", anode);
|
||||
error ("cannot deduce template arguments for %qT from ()",
|
||||
anode);
|
||||
return error_mark_node;
|
||||
}
|
||||
}
|
||||
else
|
||||
type = do_auto_deduction (type, parms, anode, complain,
|
||||
adc_variable_type);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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