// PR c++/55652 | |
// { dg-do compile { target c++11 } } | |
template <typename T> | |
struct A | |
{ | |
static const bool a = false; | |
}; | |
template <typename X, typename Y = A <X>> | |
struct B | |
{ | |
B () noexcept (A <Y>::a) {} | |
}; | |
template <typename X, typename Y> | |
struct C | |
{ | |
X x; | |
Y y; | |
}; | |
struct D | |
{ | |
D () | |
#if __cplusplus <= 201402L | |
throw (int) // { dg-warning "deprecated" "" { target { ! c++17 } } } | |
#endif | |
; | |
}; | |
C <D, B <D>> c; |