template class EE::StaticLRU

#include <lrucache.hpp>

template <std::size_t Capacity, typename KeyT = std::uint64_t, typename ValueT = std::array<char, 64>>
class StaticLRU {
public:
    // structs

    struct Entry;

    // fields

    static constexpr std::size_t N = Capacity;
    static constexpr std::size_t HASH_SZ = 2* N;
    static constexpr std::uint16_t NONE = std::numeric_limits<std::uint16_t>::max();
    static constexpr std::uint16_t DELETED_IDX = NONE - 1;

    // methods

    std::optional<ValueT> get(const KeyT& key);
    void put(KeyT key, ValueT value);
    void clear();
    std::size_t size() const;
};