#pragma once #include <concepts> #include <cstdint> #include <type_traits> namespace coro::concepts { // clang-format off template<typename type> concept const_buffer = requires(const type t) { { t.empty() } -> std::same_as<bool>; { t.data() } -> std::same_as<const char*>; { t.size() } -> std::same_as<std::size_t>; }; template<typename type> concept mutable_buffer = requires(type t) { { t.empty() } -> std::same_as<bool>; { t.data() } -> std::same_as<char*>; { t.size() } -> std::same_as<std::size_t>; }; // clang-format on } // namespace coro::concepts