/** @file quantity_concept.hpp **/ #pragma once #include "unit_concept.hpp" #include "numeric_concept.hpp" namespace xo { namespace unit { template concept quantity_concept = requires(Quantity qty, typename Quantity::repr_type repr) { typename Quantity::unit_type; typename Quantity::repr_type; { qty.scale() } -> std::same_as; { Quantity::unit_cstr() } -> std::same_as; { Quantity::unit_quantity() } -> std::same_as; { Quantity::promote(repr) } -> std::same_as; } && (unit_concept && numeric_concept); } /*namespace unit*/ } /*namespace xo*/