68 template<
typename T,
typename =
void>
69 inline constexpr bool ReallyCopyConstructible =
70 requires(
const T& src) { T{src}; };
77 inline constexpr bool ReallyCopyConstructible<
79 Container<std::remove_cvref_t<T>> &&
80 !View<std::remove_cvref_t<T>>
83 requires(
const T& src) { T{src}; } &&
84 ReallyCopyConstructible<typename std::remove_cvref_t<T>::value_type>;
90 template<
typename T,
typename =
void>
91 inline constexpr bool ReallyCopyAssignable =
92 requires(T& dest,
const T& src) { dest = src; };
99 inline constexpr bool ReallyCopyAssignable<
101 Container<std::remove_cvref_t<T>> &&
102 !View<std::remove_cvref_t<T>>
105 requires(T& dest,
const T& src) { dest = src; } &&
106 ReallyCopyAssignable<typename std::remove_cvref_t<T>::value_type>;
Type that can actually be copy-assigned.
Definition object_semantics.hxx:248
Type that can actually be copy-constructed.
Definition object_semantics.hxx:188
Both StormByte::Type::CopyConstructible and StormByte::Type::CopyAssignable.
Definition object_semantics.hxx:303
Type constructible from an empty initializer (T{} / T()).
Definition object_semantics.hxx:155
Both StormByte::Type::MoveConstructible and StormByte::Type::MoveAssignable.
Definition object_semantics.hxx:315
Type that can be move-assigned (operator=(T&&)).
Definition object_semantics.hxx:272
Type that can be move-constructed.
Definition object_semantics.hxx:212
Type that can be swapped with std::swap (std::is_swappable).
Definition object_semantics.hxx:327
StormByte::Type::CopyAssignable with a trivial copy-assignment operator.
Definition object_semantics.hxx:260
StormByte::Type::CopyConstructible with a trivial copy constructor.
Definition object_semantics.hxx:200
Type that may be copied with memcpy / as-if memcpy.
Definition object_semantics.hxx:124
StormByte::Type::DefaultConstructible with a trivial default constructor.
Definition object_semantics.hxx:167
Type with a trivial destructor.
Definition object_semantics.hxx:136
StormByte::Type::MoveAssignable with a trivial move-assignment operator.
Definition object_semantics.hxx:284
StormByte::Type::MoveConstructible with a trivial move constructor.
Definition object_semantics.hxx:224
Root namespace of the StormByte suite.
Octet count. Defined in byte_size.hxx. Forwarded so Type::Numeral can name it.