diff options
author | Jason Merrill <jason@redhat.com> | 2009-06-30 15:36:36 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2009-06-30 15:36:36 -0400 |
commit | 0db906f1851bacdb1b429ba5a6f501282fdf7a63 (patch) | |
tree | b5f4bc18d51739a52763e76b30d0bf6ddbd1305c /gcc/cp/pt.c | |
parent | 342f368cd9927a2929ab3d8d5bddfef625f520bc (diff) | |
download | gcc-0db906f1851bacdb1b429ba5a6f501282fdf7a63.zip gcc-0db906f1851bacdb1b429ba5a6f501282fdf7a63.tar.gz gcc-0db906f1851bacdb1b429ba5a6f501282fdf7a63.tar.bz2 |
re PR c++/40595 ([C++0x] ICE trying to use sfinae with variadic template pack expansion)
PR c++/40595
* pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
EXPR_PACK_EXPANSION.
From-SVN: r149117
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r-- | gcc/cp/pt.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index e0a413b..b7c309d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7630,8 +7630,15 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, and return a PACK_EXPANSION_*. The caller will need to deal with that. */ if (unsubstituted_packs) - return make_pack_expansion (tsubst (pattern, args, complain, - in_decl)); + { + tree new_pat; + if (TREE_CODE (t) == EXPR_PACK_EXPANSION) + new_pat = tsubst_expr (pattern, args, complain, in_decl, + /*integral_constant_expression_p=*/false); + else + new_pat = tsubst (pattern, args, complain, in_decl); + return make_pack_expansion (new_pat); + } /* We could not find any argument packs that work. */ if (len < 0) |