diff options
author | Jason Merrill <jason@redhat.com> | 2011-08-02 17:09:08 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-08-02 17:09:08 -0400 |
commit | 326a64554b0ebf03a33a6a55b4467e5d77e62199 (patch) | |
tree | 518c183874e6f30a6e27877da292b81944b58f4f /gcc | |
parent | adc651f305521e0e8e46fe1fee904532140d7a5e (diff) | |
download | gcc-326a64554b0ebf03a33a6a55b4467e5d77e62199.zip gcc-326a64554b0ebf03a33a6a55b4467e5d77e62199.tar.gz gcc-326a64554b0ebf03a33a6a55b4467e5d77e62199.tar.bz2 |
re PR c++/49593 ([C++0x] cannot use T{t}... as pack expansion)
PR c++/49593
* pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
From-SVN: r177214
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/pt.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic115.C | 19 |
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index dc138a1..28900c8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2011-08-02 Jason Merrill <jason@redhat.com> + PR c++/49593 + * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR. + PR c++/49803 * init.c (sort_mem_initializers): Initialize uses_unions_p here. (build_field_list): Not here. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3131e61..571da6d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -3025,6 +3025,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data) *walk_subtrees = 0; return NULL_TREE; + case CONSTRUCTOR: case TEMPLATE_DECL: cp_walk_tree (&TREE_TYPE (t), &find_parameter_packs_r, ppd, ppd->visited); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6b47169..884162d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2011-08-02 Jason Merrill <jason@redhat.com> + PR c++/49593 + * g++.dg/cpp0x/variadic115.C: New. + PR c++/49803 * g++.dg/cpp0x/union5.C: New. diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic115.C b/gcc/testsuite/g++.dg/cpp0x/variadic115.C new file mode 100644 index 0000000..fa032e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic115.C @@ -0,0 +1,19 @@ +// PR c++/49593 +// { dg-options -std=c++0x } + +template<typename... T> void f(T...) { } + +template<typename... Args> +static void +g(Args&&... args) +{ + f( static_cast<Args>(args)... ); + f( (Args)args... ); + f( Args(args)... ); + f( Args{args}... ); +} + +int main() +{ + g(1, '2', 3.0); +} |