diff --git a/docs/api_reference/src/quantities.tex b/docs/api_reference/src/quantities.tex index 24c37a77a..d88f20efc 100644 --- a/docs/api_reference/src/quantities.tex +++ b/docs/api_reference/src/quantities.tex @@ -85,13 +85,15 @@ struct dimension_one; inline constexpr dimension_one @\libglobal{dimension_one}@{}; -consteval @\libconcept{Dimension}@ auto @\liboverload{inverse}{\cname{Dimension}}@(@\libconcept{Dimension}@ auto d) { return dimension_one / d; } +// \ref{qty.dim.ops}, operations + +consteval @\libconcept{Dimension}@ auto inverse(@\libconcept{Dimension}@ auto d); template requires(Den != 0) consteval @\libconcept{Dimension}@ auto pow(D d); -consteval @\libconcept{Dimension}@ auto @\liboverload{sqrt}{\cname{Dimension}}@(@\libconcept{Dimension}@ auto d) { return pow<1, 2>(d); } -consteval @\libconcept{Dimension}@ auto @\liboverload{cbrt}{\cname{Dimension}}@(@\libconcept{Dimension}@ auto d) { return pow<1, 3>(d); } +consteval @\libconcept{Dimension}@ auto sqrt(@\libconcept{Dimension}@ auto d); +consteval @\libconcept{Dimension}@ auto cbrt(@\libconcept{Dimension}@ auto d); // \ref{qty.dim.sym.fmt}, symbol formatting @@ -1310,29 +1312,9 @@ \rSec3[qty.dim.types]{Types} -\indexlibrarymemberconcept{operator*}{Dimension} -\indexlibrarymemberconcept{operator/}{Dimension} -\indexlibrarymemberconcept{operator==}{Dimension} \begin{codeblock} namespace mp_units { -struct @\exposidnc{dimension-interface}@ { // \expos - friend consteval @\libconcept{Dimension}@ auto operator*(@\libconcept{Dimension}@ auto lhs, @\libconcept{Dimension}@ auto rhs) - { - return @\exposidnc{expr-multiply}@(lhs, rhs); - } - - friend consteval @\libconcept{Dimension}@ auto operator/(@\libconcept{Dimension}@ auto lhs, @\libconcept{Dimension}@ auto rhs) - { - return @\exposidnc{expr-divide}@(lhs, rhs); - } - - friend consteval bool operator==(@\libconcept{Dimension}@ auto lhs, @\libconcept{Dimension}@ auto rhs) - { - return std::is_same_v; - } -}; - template struct @\libglobal{base_dimension}@ : @\exposidnc{dimension-interface}@ { static constexpr auto @\exposidnc{symbol}@ = Symbol; // \expos @@ -1391,6 +1373,73 @@ \pnum \tcode{dimension_one} represents the dimension of a quantity of dimension one\irefiev{112-01-13}. +\rSec3[qty.dim.ops]{Operations} + +\indexlibraryglobalexpos{dimension-interface} +\begin{codeblock} +namespace mp_units { + +struct @\exposidnc{dimension-interface}@ { // \expos + template<@\libconcept{Dimension}@ Lhs, @\libconcept{Dimension}@ Rhs> + friend consteval @\libconcept{Dimension}@ auto operator*(Lhs, Rhs); + + template<@\libconcept{Dimension}@ Lhs, @\libconcept{Dimension}@ Rhs> + friend consteval @\libconcept{Dimension}@ auto operator/(Lhs, Rhs); + + template<@\libconcept{Dimension}@ Lhs, @\libconcept{Dimension}@ Rhs> + friend consteval bool operator==(Lhs, Rhs); +}; + +} +\end{codeblock} + +\indexlibrarymemberconcept{operator*}{Dimension} +\begin{itemdecl} +template<@\libconcept{Dimension}@ Lhs, @\libconcept{Dimension}@ Rhs> +friend consteval @\libconcept{Dimension}@ auto operator*(Lhs, Rhs); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{\exposidnc{expr-multiply}(Lhs{}, Rhs{})}. +\end{itemdescr} + +\indexlibrarymemberconcept{operator/}{Dimension} +\begin{itemdecl} +template<@\libconcept{Dimension}@ Lhs, @\libconcept{Dimension}@ Rhs> +friend consteval @\libconcept{Dimension}@ auto operator/(Lhs, Rhs); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{\exposidnc{expr-divide}(Lhs{}, Rhs{})}. +\end{itemdescr} + +\indexlibrarymemberconcept{operator==}{Dimension} +\begin{itemdecl} +template<@\libconcept{Dimension}@ Lhs, @\libconcept{Dimension}@ Rhs> +friend consteval bool operator==(Lhs, Rhs); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{std::is_same_v}. +\end{itemdescr} + +\indexlibrarymemberconcept{inverse}{Dimension} +\begin{itemdecl} +consteval @\libconcept{Dimension}@ auto inverse(@\libconcept{Dimension}@ auto d); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{dimension_one / d}. +\end{itemdescr} + \indexlibrarymemberconcept{pow}{Dimension} \begin{itemdecl} template @@ -1404,6 +1453,28 @@ \tcode{\exposidnc{expr-pow}(d)}. \end{itemdescr} +\indexlibrarymemberconcept{sqrt}{Dimension} +\begin{itemdecl} +consteval @\libconcept{Dimension}@ auto sqrt(@\libconcept{Dimension}@ auto d); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{pow<1, 2>(d)}. +\end{itemdescr} + +\indexlibrarymemberconcept{cbrt}{Dimension} +\begin{itemdecl} +consteval @\libconcept{Dimension}@ auto cbrt(@\libconcept{Dimension}@ auto d); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{pow<1, 3>(d)}. +\end{itemdescr} + \rSec3[qty.dim.sym.fmt]{Symbol formatting} \indexlibraryglobal{dimension_symbol_to}