// 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>>);