From 57b9683f0ce55a410c567fcb2dc365a2cc848d6a Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 26 Feb 2018 06:09:07 +0000 Subject: [PATCH] PR c++/81589 - error with is_trivially_constructible. * method.c (constructible_expr): Set cp_unevaluated. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@257981 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/method.c | 1 + gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 59ad43f73fee..a2d4c071efa3 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1165,6 +1165,7 @@ constructible_expr (tree to, tree from) { tree ctype = to; vec *args = NULL; + cp_unevaluated cp_uneval_guard; if (TREE_CODE (to) != REFERENCE_TYPE) to = cp_build_reference_type (to, /*rval*/false); tree ob = build_stub_object (to); diff --git a/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C b/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C new file mode 100644 index 000000000000..10a8dfbb8f0b --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C @@ -0,0 +1,10 @@ +// PR c++/81589 + +template +struct z { + z() { + k::error; + } +}; + +int x = __is_trivially_constructible(z);