diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C new file mode 100644 index 0000000..ee90c9b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C @@ -0,0 +1,36 @@ +// { dg-do compile { target c++11 } } +// PR c++/33939 +template<typename T> +struct refs_only; + +template<typename T> +struct refs_only<T &> +{}; + +template<typename T> +refs_only<T> foo( T && t) +{ + return refs_only<T>(); +} + +template<typename... T> +struct va_refs_only; + +template<typename T> +struct va_refs_only<T> + : refs_only<T> +{}; + +template<typename... T> +va_refs_only<T...> bar( T &&... t) +{ + return va_refs_only<T...>(); +} + +int main() +{ + int j = 0; + foo(j); + bar(j); // error: invalid use of incomplete type 'struct refs_only<int>' +} + |