| // PR c++/81349 | |
| // { dg-do compile { target c++17_only } } | |
| #include <type_traits> | |
| struct A { | |
| A (int) = delete; | |
| }; | |
| struct B { | |
| template <typename T> | |
| B (T) = delete; | |
| }; | |
| template <typename U> | |
| struct C { | |
| C (U) = delete; | |
| }; | |
| template <typename U> | |
| struct D { | |
| template <typename T> | |
| D (T, U) = delete; | |
| }; | |
| static_assert (std::is_aggregate_v<A>); | |
| static_assert (std::is_aggregate_v<B>); | |
| static_assert (std::is_aggregate_v<C<int>>); | |
| static_assert (std::is_aggregate_v<D<int>>); |