std::copyable - std::copyable
Defined in header <concepts>
template <class T>
concept copyable =
std::copy_constructible<T> &&
std::movable<T> && (since C++20)
std::assignable_from<T&, T&> &&
std::assignable_from<T&, const T&> &&
std::assignable_from<T&, const T>;
The concept copyable<T> specifies that T is an movable object type that
can also
copied (that is, it supports copy construction and copy assignment).
movable specifies that an object of a type can be moved and
swapped
(C++20) (concept)