diff options
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); +} |