2021-12-09 12:38:02 +01:00
|
|
|
#pragma once
|
|
|
|
|
#include <concepts>
|
|
|
|
|
|
|
|
|
|
namespace Seele
|
|
|
|
|
{
|
|
|
|
|
template<class F, class... Args>
|
|
|
|
|
concept invocable = std::invocable<F, Args...>;
|
2023-02-13 14:56:13 +01:00
|
|
|
|
2023-07-13 21:01:20 +02:00
|
|
|
template<class Archive, class T>
|
|
|
|
|
concept serializable = requires(const T& t, Archive& a)
|
2023-02-13 14:56:13 +01:00
|
|
|
{
|
2023-04-09 16:39:53 +02:00
|
|
|
t.save(a);
|
2023-07-13 21:01:20 +02:00
|
|
|
} && requires(T& t, Archive& a)
|
2023-04-09 16:39:53 +02:00
|
|
|
{
|
|
|
|
|
t.load(a);
|
2023-02-13 14:56:13 +01:00
|
|
|
};
|
|
|
|
|
template<typename T>
|
|
|
|
|
concept enumeration = std::is_enum_v<T>;
|
2021-12-09 12:38:02 +01:00
|
|
|
}
|