https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122690

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
In that case the P2674R1 paper itself is buggy, because it suggests that the
trait could be implemented as
template<typename T>
struct is_implicit_lifetime : std::disjunction<
std::is_scalar<T>,
std::is_array<T>,
std::is_aggregate<T>,
std::conjunction<
std::is_trivially_destructible<T>,
std::disjunction<
std::is_trivially_default_constructible<T>,
std::is_trivially_copy_constructible<T>,
std::is_trivially_move_constructible<T>>>> {};
except that CWG2605 makes that not user provided part unimplementable.
Your testcase with private/protected trivial default constructor and
non-trivial eligible copy and move constructors certainly isn't
is_trivially_default_constructible, is_trivially_copy_constructible or
is_trivially_move_constructible.

Reply via email to