diff options
author | Jason Merrill <jason@redhat.com> | 2014-01-27 23:31:23 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-01-27 23:31:23 -0500 |
commit | 9e73c3f3a5fa913452747c9facff9fb2be7e23a0 (patch) | |
tree | 183345d5bfbfd50b56c7c8fa46755fa0d4afa4e3 /gcc | |
parent | b25c2a2f3404797866e5c317c2b5d922452a1707 (diff) | |
download | gcc-9e73c3f3a5fa913452747c9facff9fb2be7e23a0.zip gcc-9e73c3f3a5fa913452747c9facff9fb2be7e23a0.tar.gz gcc-9e73c3f3a5fa913452747c9facff9fb2be7e23a0.tar.bz2 |
re PR c++/58504 (ICE with type trait as default template parameter)
PR c++/58504
* pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
types.
From-SVN: r207168
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/pt.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/traits1.C | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 68fa2b9..07f82ad9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2014-01-27 Jason Merrill <jason@redhat.com> + PR c++/58504 + * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for + types. + PR c++/58606 * pt.c (template_parm_to_arg): Call convert_from_reference. (tsubst_template_arg): Don't strip reference refs. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 661143a..47d07db 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -14974,12 +14974,12 @@ tsubst_copy_and_build (tree t, case TRAIT_EXPR: { - tree type1 = tsubst_copy (TRAIT_EXPR_TYPE1 (t), args, - complain, in_decl); + tree type1 = tsubst (TRAIT_EXPR_TYPE1 (t), args, + complain, in_decl); tree type2 = TRAIT_EXPR_TYPE2 (t); if (type2) - type2 = tsubst_copy (type2, args, complain, in_decl); + type2 = tsubst (type2, args, complain, in_decl); RETURN (finish_trait_expr (TRAIT_EXPR_KIND (t), type1, type2)); } diff --git a/gcc/testsuite/g++.dg/ext/traits1.C b/gcc/testsuite/g++.dg/ext/traits1.C new file mode 100644 index 0000000..24099e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/traits1.C @@ -0,0 +1,4 @@ +// PR c++/58504 + +template<bool = __has_nothrow_assign(void)> struct A {}; +A<> a; |