23 template <
class F,
class R,
class... Args>
25 requires(F&& f, Args&&... args) {
26 { std::invoke(std::forward<F>(f), std::forward<Args>(args)...) } -> std::same_as<R>;
30 template <
class F,
class R,
class... Args>
48 concept alloc =
requires(A& a) {
55 typename A::outer_allocator_type;
56 typename A::inner_allocator_type;
60 template<
class T,
class Stream>
61 concept serializable_to =
requires(std::remove_reference_t<Stream>& stream,
const std::remove_reference_t<T>& t) {
62 typename Stream::char_type;
67 template<
class T,
class Stream>
68 concept deserializable_from =
requires(std::remove_reference_t<Stream>& stream, std::remove_reference_t<T>& t) {
69 typename Stream::char_type;
74 template<
class T,
class... Args>
76 T{std::declval<Args>()...};
92 std::ranges::begin(t);
95 requires (!std::same_as<std::remove_cvref_t<
decltype(*std::ranges::begin(t))>, std::remove_cvref_t<T>>);
Traits which are sufficiently general to appear in the sequoia namespace.
A concept for allocators.
Definition: Concepts.hpp:48
\brieft A concept for arithmetic types
Definition: Concepts.hpp:81
Concept to work around the fact that currently the stl typically underconstrains operator==.
Definition: Concepts.hpp:105
A concept which is realized by a Stream& which may be deserialized to a T&.
Definition: Concepts.hpp:68
Similar to std::range but excludes the case where dereferencing yields the same type as the range.
Definition: Concepts.hpp:91
A concept similar to std::constructible_from, but which considers braced-init.
Definition: Concepts.hpp:75
Supplements std::invocable.
Definition: Concepts.hpp:24
Building block for concepts related to std::regular but without the requirement of default constructi...
Definition: Concepts.hpp:35
The move-only version of sequoia::pseudoregular.
Definition: Concepts.hpp:43
Similar to std::regular but relaxes the requirement of default initializability.
Definition: Concepts.hpp:39
Supplements std::regular_invocable.
Definition: Concepts.hpp:31
A concept for scoped allocators.
Definition: Concepts.hpp:54
A concept which is realized by a T const& which may be serialized to a Stream&.
Definition: Concepts.hpp:61