diff --git a/src/include/units/bits/external/type_traits.h b/src/include/units/bits/external/type_traits.h index e3913b4b..f48bd2ce 100644 --- a/src/include/units/bits/external/type_traits.h +++ b/src/include/units/bits/external/type_traits.h @@ -57,25 +57,25 @@ inline constexpr bool is_same_v = true; template using is_same = std::bool_constant>; -// is_instantiation_of +// is_specialization_of namespace detail { template typename Type> -inline constexpr bool is_instantiation_of_impl = false; +inline constexpr bool is_specialization_of_impl = false; template typename Type> -inline constexpr bool is_instantiation_of_impl, Type> = true; +inline constexpr bool is_specialization_of_impl, Type> = true; } // namespace detail template typename Type> -inline constexpr bool is_instantiation_of = detail::is_instantiation_of_impl; +inline constexpr bool is_specialization_of = detail::is_specialization_of_impl; -// is_derived_from_instantiation_of +// is_derived_from_specialization_of namespace detail { template typename Type> -struct is_derived_from_instantiation_of_impl { +struct is_derived_from_specialization_of_impl { template static constexpr std::true_type check_base(const Type&); static constexpr std::false_type check_base(...); @@ -84,6 +84,6 @@ struct is_derived_from_instantiation_of_impl { } // namespace detail template typename Type> -inline constexpr bool is_derived_from_instantiation_of = decltype(detail::is_derived_from_instantiation_of_impl::check_base(std::declval()))::value; +inline constexpr bool is_derived_from_specialization_of = decltype(detail::is_derived_from_specialization_of_impl::check_base(std::declval()))::value; } // namespace units diff --git a/src/include/units/concepts.h b/src/include/units/concepts.h index 1a32db76..549c8742 100644 --- a/src/include/units/concepts.h +++ b/src/include/units/concepts.h @@ -35,7 +35,7 @@ struct prefix_family; /** * @brief A concept matching a prefix family - * + * * Satisfied by all types derived from `prefix_family` */ template @@ -56,8 +56,8 @@ concept PrefixFamily = std::derived_from; /** * @brief A concept matching a symbol prefix - * - * Satisfied by all instantiations of `prefix`. + * + * Satisfied by all specializations of `prefix`. */ template // concept Prefix = detail::is_prefix; @@ -66,7 +66,7 @@ concept Prefix = true; /** * @brief A concept matching unit's ratio - * + * * Satisfied by all ratio values for which `R.num > 0` and `R.den > 0`. */ template @@ -93,8 +93,8 @@ inline constexpr bool is_derived_from_scaled_unit = decltype(is_derived_from_sca /** * @brief A concept matching all unit types in the library - * - * Satisfied by all unit types derived from the instantiation of :class:`scaled_unit`. + * + * Satisfied by all unit types derived from an specialization of :class:`scaled_unit`. */ template concept Unit = detail::is_derived_from_scaled_unit; @@ -118,8 +118,8 @@ inline constexpr bool is_derived_from_base_dimension = decltype(is_derived_from_ /** * @brief A concept matching all base dimensions in the library. - * - * Satisfied by all dimension types derived from the instantiation of `base_dimension`. + * + * Satisfied by all dimension types derived from an specialization of `base_dimension`. */ template concept BaseDimension = detail::is_derived_from_base_dimension; @@ -134,8 +134,8 @@ inline constexpr bool is_exp = false; /** * @brief A concept matching dimension's exponents. - * - * Satisfied by all instantiations of :class:`exp`. + * + * Satisfied by all specializations of :class:`exp`. */ template concept Exponent = detail::is_exp; @@ -151,16 +151,16 @@ struct derived_dimension_base; /** * @brief A concept matching all derived dimensions in the library. - * - * Satisfied by all dimension types derived from the instantiation of `detail::derived_dimension_base`. + * + * Satisfied by all dimension types derived from an specialization of `detail::derived_dimension_base`. */ template -concept DerivedDimension = is_derived_from_instantiation_of; +concept DerivedDimension = is_derived_from_specialization_of; // Dimension /** - * @brief A concept matching all dimensions in the library. - * + * @brief A concept matching all dimensions in the library. + * * Satisfied by all dimension types for which either `BaseDimension` or `DerivedDimension` is `true`. */ template @@ -186,10 +186,10 @@ struct dimension_unit_impl { /** * @brief Returns a 'default' unit of the dimension - * + * * Depending on the dimension type it returns a base unit (for base dimensions) * or a coherent unit (in case of derived dimensions). - * + * * @tparam D Dimension type to get the unit from. */ template @@ -197,10 +197,10 @@ using dimension_unit = TYPENAME detail::dimension_unit_impl::type; /** * @brief A concept matching only units of a specified dimension. - * + * * Satisfied by all unit types that satisfy `Unit`, `Dimension`, and for which * `U::reference` and @c dimension_unit::reference denote the same unit type. - * + * * @tparam U Type to verify. * @tparam D Dimension type to use for verification. */ @@ -223,8 +223,8 @@ inline constexpr bool is_quantity_point = false; /** * @brief A concept matching all quantities in the library. - * - * Satisfied by all instantiations of :class:`quantity`. + * + * Satisfied by all specializations of :class:`quantity`. */ template concept Quantity = detail::is_quantity; @@ -232,7 +232,7 @@ concept Quantity = detail::is_quantity; /** * @brief A concept matching all quantity points in the library. * - * Satisfied by all instantiations of :class:`quantity_point`. + * Satisfied by all specializations of :class:`quantity_point`. */ template concept QuantityPoint = detail::is_quantity_point; @@ -252,7 +252,7 @@ inline constexpr bool is_wrapped_quantity = Quantity /** * @brief A concept matching types that wrap quantity objects. - * + * * Satisfied by all wrapper types that satisfy `Quantity` * recursively (i.e. `std::optional>`). */ @@ -266,7 +266,7 @@ namespace detail { template concept constructible_from_integral = // construction from an integral type - std::constructible_from && + std::constructible_from && // unit scaling std::regular_invocable, T, T> && std::regular_invocable, T, T>; @@ -274,7 +274,7 @@ concept constructible_from_integral = template concept not_constructible_from_integral = // not construction from an integral type - (!std::constructible_from) && + (!std::constructible_from) && // scaling by the value from ratio std::regular_invocable, T, std::int64_t> && @@ -285,7 +285,7 @@ concept not_constructible_from_integral = /** * @brief A concept matching non-Quantity types. - * + * * Satisfied by types that satisfy `(!Quantity) && (!WrappedQuantity) && std::regular`. */ template diff --git a/src/include/units/physical/dimensions.h b/src/include/units/physical/dimensions.h index 95ac5c44..40e13b0b 100644 --- a/src/include/units/physical/dimensions.h +++ b/src/include/units/physical/dimensions.h @@ -30,10 +30,10 @@ namespace units::physical { template typename DimTemplate> -concept DimensionOf = Dimension && is_derived_from_instantiation_of; +concept DimensionOf = Dimension && is_derived_from_specialization_of; template typename DimTemplate> -concept QuantityOf = Quantity && is_derived_from_instantiation_of; +concept QuantityOf = Quantity && is_derived_from_specialization_of; // ------------------------ base dimensions ----------------------------- diff --git a/src/include/units/quantity_cast.h b/src/include/units/quantity_cast.h index 79509c50..362bd43e 100644 --- a/src/include/units/quantity_cast.h +++ b/src/include/units/quantity_cast.h @@ -379,10 +379,10 @@ template */ template [[nodiscard]] constexpr auto quantity_point_cast(const quantity_point& qp) - requires is_instantiation_of || + requires is_specialization_of || requires(quantity q) { quantity_cast(q); } { - if constexpr (is_instantiation_of) + if constexpr (is_specialization_of) return quantity_point(quantity_cast(qp.relative())); else return quantity_point(quantity_cast(qp.relative()));