#pragma once #include namespace Seele { template concept invocable = std::invocable; template concept serializable = requires(const T& t, Archive& a) { t.save(a); } && requires(T& t, Archive& a) { t.load(a); }; template concept enumeration = std::is_enum_v; }