#pragma once #include #include namespace Seele { template concept container_compatible_range = (std::ranges::input_range) && std::convertible_to, T>; 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; } // namespace Seele