diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/noexcept15.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/noexcept15.C | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/noexcept15.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/noexcept15.C new file mode 100644 index 0000000..909ee97 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/noexcept15.C @@ -0,0 +1,34 @@ +// PR c++/50391 +// { dg-do compile { target c++11 } } + +#include <type_traits> + +template<class Tp> + struct single + { + Tp elem; // { dg-error "incomplete type" } + + constexpr single(const Tp& e) + : elem(e) { } + + single(single&& s) + noexcept(std::is_nothrow_move_constructible<Tp>::value) + : elem(s.elem) { } + }; + +template<class Tp> + constexpr single<typename std::decay<Tp>::type> + make_single(Tp&& x) + { + return single<typename std::decay<Tp>::type>(x); + } + +class Blob; // { dg-error "forward declaration" } + +void +foo(Blob *b) +{ + make_single(*b); +} + +// { dg-prune-output "include" } |