diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/torture/pr53161.C')
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr53161.C | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/torture/pr53161.C b/gcc/testsuite/g++.dg/torture/pr53161.C new file mode 100644 index 0000000000..483556d9d8 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr53161.C @@ -0,0 +1,22 @@ +/* { dg-do compile { target c++11 } } */ +void gg(); +static __typeof(gg) __gthrw_gg __attribute__((__weakref__("gg"))); + +template<typename R,typename... A> +struct data { + template<typename Y,typename X> + data(Y& y,R(X::*f)(A...)); +}; + +template<typename Y,typename X,typename R,typename... A> +data<R,A...> make_data(Y& y,R(X::*f)(A...)) { + return data<R,A...>(y,f); +} + +void global(data<void>); + +struct test { + void bar() {} + void doit() { global(make_data(*this,&test::bar)); } +}; + |