std::assignable_from(3)

NAME
std::assignable_from - std::assignable_from

Synopsis
   Defined in header <concepts>
   template< class LHS, class RHS >
   concept assignable_from =
       std::is_lvalue_reference_v<LHS> &&
       std::common_reference_with<
           const std::remove_reference_t<LHS>&, (since C++20)
           const std::remove_reference_t<RHS>&> &&
       requires(LHS lhs, RHS&& rhs) {
           { lhs = std::forward<RHS>(rhs) } -> std::same_as<LHS>;
       };
   The concept assignable_from<LHS, RHS> specifies that an expression of the type and
   value category specified by RHS can be assigned to an lvalue expression whose type
   is specified by LHS.

Notes
   Assignment need not be a total function. In particular, if assigning to some object
   x can cause some other object y to be modified, then x = y is likely not in the
   domain of =. This typically happens if the right operand is owned directly or
   indirectly by the left operand (e.g., with smart pointers to nodes in a node-based
   data structure, or with something like std::vector<std::any>).

See also
   is_assignable
   is_trivially_assignable checks if a type has an assignment operator for a specific
   is_nothrow_assignable argument
   (C++11) (class template)
   (C++11)
   (C++11)