From 76d881bfdde273435570ac45dca11e46b27763d0 Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Tue, 1 Mar 2016 01:24:44 +0000 Subject: Fix PR c++/69961 (invalid ctor call with dependent args) gcc/cp/ChangeLog: PR c++/68948 PR c++/69961 * pt.c (tsubst_baselink): Reinstate the check for an invalid constructor call. gcc/testsuite/ChangeLog: PR c++/69961 * g++.dg/template/pr69961a.C: New test. * g++.dg/template/pr69961b.C: New test. From-SVN: r233838 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/pt.c | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'gcc/cp') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 49ca2f2..04e1426 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2016-03-01 Patrick Palka + + PR c++/68948 + PR c++/69961 + * pt.c (tsubst_baselink): Reinstate the check for an invalid + constructor call. + 2016-02-28 Jason Merrill PR c++/69995 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index b5855a8..b3681be 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -13622,7 +13622,15 @@ tsubst_baselink (tree baselink, tree object_type, name = mangle_conv_op_name_for_type (optype); baselink = lookup_fnfields (qualifying_scope, name, /*protect=*/1); if (!baselink) - return error_mark_node; + { + if (constructor_name_p (name, qualifying_scope)) + { + if (complain & tf_error) + error ("cannot call constructor %<%T::%D%> directly", + qualifying_scope, name); + } + return error_mark_node; + } /* If lookup found a single function, mark it as used at this point. (If it lookup found multiple functions the one selected -- cgit v1.1