For example:
struct X {
X(){/***/};
X(const int& ){/***/};
X( int&&){/***/};
X(const X& ) = default;
X( X&&) = default;
X& operator=(const X& ){/***/};
X& operator=( X&&){/***/};
};
Class X
is not trivial and is not an aggregate.
Checking the source code of class X
is not an option (although it is known which constructors and operators are available).