diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x/variadic-rref.C')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic-rref.C | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C b/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C new file mode 100644 index 000000000..08221b460 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic-rref.C @@ -0,0 +1,36 @@ +// { dg-options "-std=c++0x" } +// 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>' +} + |