#pragma once
#include <concepts>
#include <memory_resource>
#include "Color_Cache.hpp"
template <class Cache>
concept Color_Cache_Type = std::derived_from<Cache, Color_Cache> && (std::default_initializable<Cache> || std::constructible_from<Cache, std::pmr::memory_resource&>) && requires(Cache& cache, const Cache& source) {
    { cache.clear() } -> std::same_as<void>;
    { cache.composite(source) } -> std::same_as<void>;
};
