#pragma once
#include "Concepts.hpp"
#include <stdexcept>
template <Property_Set Properties>
struct No_Property_Validator {
    void operator()(const Properties&) const noexcept {}
};
template <std::totally_ordered Value, Value Min, Value Max>
struct Range_Validator {
    static_assert(!(Max < Min));
    void operator()(const Value& value) const {
        if (value < Min || Max < value) {
            throw std::out_of_range("property value is outside the declared range");
        }
    }
};
