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