sandbox
Loading...
Searching...
No Matches
concepts.hpp
1// SPDX-License-Identifier: MIT
2#ifndef LIBSBX_IO_CONCEPTS_HPP_
3#define LIBSBX_IO_CONCEPTS_HPP_
4
5#include <concepts>
6#include <type_traits>
7
8namespace sbx::io {
9
10template<typename Type, typename Serializer>
11concept serializable = requires(Serializer& serializer, const Type& value) {
12 { serializer << value } -> std::same_as<Serializer&>;
13}; // concept serializable
14
15template<typename Type, typename Deserializer>
16concept deserializable = requires(Deserializer& deserializer, Type& value) {
17 { deserializer >> value } -> std::same_as<Deserializer&>;
18}; // concept deserializable
19
20} // namespace sbx::io
21
22#endif // LIBSBX_IO_CONCEPTS_HPP_