5cbbea8a91a42757fc697a61e44d8be70550cfe3
[gcc.git] / gcc / testsuite / g++.dg / cpp0x / noexcept15.C
1 // PR c++/50391
2 // { dg-do compile { target c++11 } }
3
4 #include <type_traits>
5
6 template<class Tp>
7 struct single
8 {
9 Tp elem; // { dg-error "incomplete type" }
10
11 constexpr single(const Tp& e)
12 : elem(e) { }
13
14 single(single&& s)
15 noexcept(std::is_nothrow_move_constructible<Tp>::value)
16 : elem(s.elem) { }
17 };
18
19 template<class Tp>
20 constexpr single<typename std::decay<Tp>::type>
21 make_single(Tp&& x)
22 {
23 return single<typename std::decay<Tp>::type>(x);
24 }
25
26 class Blob; // { dg-message "forward declaration" }
27
28 void
29 foo(Blob *b)
30 {
31 make_single(*b);
32 }