From eb615a60a0588b259b3f341279845249ce7cfd09 Mon Sep 17 00:00:00 2001 From: Chip Hogg Date: Fri, 1 Sep 2023 09:29:09 -0400 Subject: [PATCH] Update troubleshooting page for 0.3.3 release (#172) This will ensure that the released docs will match the released code. It's mostly just line number updates, but I did find some misplaced and/or extra lines. It also looks like the windows 2022 image may have updated to a newer version, which would be annoying if so, but their version numbering scheme is so confusing that I don't really know what to do about it. --- docs/troubleshooting.md | 328 ++++++++++++++++++++-------------------- 1 file changed, 160 insertions(+), 168 deletions(-) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 7f08d256..f578012d 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -82,13 +82,13 @@ It's the "classic" error the units library aims to prevent. au/error_examples.cc:33:17: error: calling a private constructor of class 'au::Quantity' set_timeout(0.5); ^ - ./au/quantity.hh:397:15: note: declared private here + ./au/quantity.hh:419:15: note: declared private here constexpr Quantity(Rep value) : value_{value} {} ^ au/error_examples.cc:36:33: error: calling a private constructor of class 'au::Quantity' constexpr QuantityD length{5.5}; ^ - ./au/quantity.hh:397:15: note: declared private here + ./au/quantity.hh:419:15: note: declared private here constexpr Quantity(Rep value) : value_{value} {} ^ ``` @@ -98,13 +98,13 @@ It's the "classic" error the units library aims to prevent. au/error_examples.cc:33:17: error: calling a private constructor of class 'au::Quantity' set_timeout(0.5); ^ - ./au/quantity.hh:397:15: note: declared private here + ./au/quantity.hh:419:15: note: declared private here constexpr Quantity(Rep value) : value_{value} {} ^ au/error_examples.cc:36:33: error: calling a private constructor of class 'au::Quantity' constexpr QuantityD length{5.5}; ^ - ./au/quantity.hh:397:15: note: declared private here + ./au/quantity.hh:419:15: note: declared private here constexpr Quantity(Rep value) : value_{value} {} ^ ``` @@ -118,8 +118,8 @@ It's the "classic" error the units library aims to prevent. In file included from ./au/math.hh:22, from ./au/au.hh:19, from au/error_examples.cc:15: - ./au/quantity.hh:397:15: note: declared private here - 397 | constexpr Quantity(Rep value) : value_{value} {} + ./au/quantity.hh:419:15: note: declared private here + 419 | constexpr Quantity(Rep value) : value_{value} {} | ^~~~~~~~ au/error_examples.cc:36:43: error: 'constexpr au::Quantity::Quantity(au::Quantity::Rep) [with UnitT = au::Meters; RepT = double; au::Quantity::Rep = double]' is private within this context 36 | constexpr QuantityD length{5.5}; @@ -127,29 +127,29 @@ It's the "classic" error the units library aims to prevent. In file included from ./au/math.hh:22, from ./au/au.hh:19, from au/error_examples.cc:15: - ./au/quantity.hh:397:15: note: declared private here - 397 | constexpr Quantity(Rep value) : value_{value} {} + ./au/quantity.hh:419:15: note: declared private here + 419 | constexpr Quantity(Rep value) : value_{value} {} | ^~~~~~~~ ``` **Compiler error (MSVC x64 19.29)** ``` error_examples.cc(32): error C2248: 'au::Quantity::Quantity': cannot access private member declared in class 'au::Quantity' - D:\a\au\au\au.hh(3174): note: see declaration of 'au::Quantity::Quantity' - D:\a\au\au\au.hh(3241): note: see declaration of 'au::Quantity' + D:\a\au\au\au.hh(3202): note: see declaration of 'au::Quantity::Quantity' + D:\a\au\au\au.hh(3269): note: see declaration of 'au::Quantity' error_examples.cc(35): error C2248: 'au::Quantity::Quantity': cannot access private member declared in class 'au::Quantity' - D:\a\au\au\au.hh(3174): note: see declaration of 'au::Quantity::Quantity' - D:\a\au\au\au.hh(3241): note: see declaration of 'au::Quantity' + D:\a\au\au\au.hh(3202): note: see declaration of 'au::Quantity::Quantity' + D:\a\au\au\au.hh(3269): note: see declaration of 'au::Quantity' ``` **Compiler error (MSVC x64 19.35)** ``` error_examples.cc(32): error C2248: 'au::Quantity::Quantity': cannot access private member declared in class 'au::Quantity' - D:\a\au\au\au.hh(3174): note: see declaration of 'au::Quantity::Quantity' - D:\a\au\au\au.hh(3241): note: see declaration of 'au::Quantity' + D:\a\au\au\au.hh(3202): note: see declaration of 'au::Quantity::Quantity' + D:\a\au\au\au.hh(3269): note: see declaration of 'au::Quantity' error_examples.cc(35): error C2248: 'au::Quantity::Quantity': cannot access private member declared in class 'au::Quantity' - D:\a\au\au\au.hh(3174): note: see declaration of 'au::Quantity::Quantity' - D:\a\au\au\au.hh(3241): note: see declaration of 'au::Quantity' + D:\a\au\au\au.hh(3202): note: see declaration of 'au::Quantity::Quantity' + D:\a\au\au\au.hh(3269): note: see declaration of 'au::Quantity' ``` ## Dangerous conversion @@ -276,8 +276,8 @@ operation (at least in this format). **Compiler error (MSVC x64 19.29)** ``` - D:\a\au\au\au.hh(2946): error C2338: Dangerous conversion for integer Rep! See: https://aurora-opensource.github.io/au/main/troubleshooting/#dangerous-conversion - D:\a\au\au\au.hh(2983): note: see reference to function template instantiation 'auto au::Quantity::as(NewUnit) const' being compiled + D:\a\au\au\au.hh(2952): error C2338: Dangerous conversion for integer Rep! See: https://aurora-opensource.github.io/au/main/troubleshooting/#dangerous-conversion + D:\a\au\au\au.hh(2989): note: see reference to function template instantiation 'auto au::Quantity::as(NewUnit) const' being compiled with [ NewUnit=au::Feet @@ -287,8 +287,8 @@ operation (at least in this format). **Compiler error (MSVC x64 19.35)** ``` - D:\a\au\au\au.hh(2946): error C2338: static_assert failed: 'Dangerous conversion for integer Rep! See: https://aurora-opensource.github.io/au/main/troubleshooting/#dangerous-conversion' - D:\a\au\au\au.hh(2983): note: see reference to function template instantiation 'auto au::Quantity::as(NewUnit) const' being compiled + D:\a\au\au\au.hh(2952): error C2338: static_assert failed: 'Dangerous conversion for integer Rep! See: https://aurora-opensource.github.io/au/main/troubleshooting/#dangerous-conversion' + D:\a\au\au\au.hh(2989): note: see reference to function template instantiation 'auto au::Quantity::as(NewUnit) const' being compiled with [ NewUnit=au::Feet @@ -334,10 +334,10 @@ dimension. Then, figure out how to fix your expression so it has the right dime external/llvm_14_toolchain_llvm/bin/../include/c++/v1/type_traits:2388:25: error: no type named 'type' in 'std::common_type, au::Quantity>' template using common_type_t = typename common_type<_Tp...>::type; ^~~~~ - ./au/quantity.hh:560:20: note: in instantiation of template type alias 'common_type_t' requested here + ./au/quantity.hh:582:20: note: in instantiation of template type alias 'common_type_t' requested here using C = std::common_type_t; ^ - ./au/quantity.hh:598:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Plus>' requested here + ./au/quantity.hh:620:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Plus>' requested here return detail::using_common_type(q1, q2, detail::plus); ^ au/error_examples.cc:55:15: note: in instantiation of function template specialization 'au::operator+' requested here @@ -353,10 +353,10 @@ dimension. Then, figure out how to fix your expression so it has the right dime external/llvm_11_toolchain_llvm/bin/../include/c++/v1/type_traits:2462:25: error: no type named 'type' in 'std::__1::common_type, au::Quantity>' template using common_type_t = typename common_type<_Tp...>::type; ^~~~~ - ./au/quantity.hh:560:20: note: in instantiation of template type alias 'common_type_t' requested here + ./au/quantity.hh:582:20: note: in instantiation of template type alias 'common_type_t' requested here using C = std::common_type_t; ^ - ./au/quantity.hh:598:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Plus>' requested here + ./au/quantity.hh:620:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Plus>' requested here return detail::using_common_type(q1, q2, detail::plus); ^ au/error_examples.cc:55:15: note: in instantiation of function template specialization 'au::operator+' requested here @@ -371,8 +371,8 @@ dimension. Then, figure out how to fix your expression so it has the right dime from ./au/au.hh:17, from au/error_examples.cc:15: external/sysroot_x86_64//include/c++/10.3.0/type_traits: In substitution of 'template using common_type_t = typename std::common_type::type [with _Tp = {au::Quantity, au::Quantity}]': - ./au/quantity.hh:560:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Plus]' - ./au/quantity.hh:598:37: required from 'constexpr auto au::operator+(au::Quantity, au::Quantity) [with U1 = au::Meters; U2 = au::Seconds; R1 = int; R2 = int]' + ./au/quantity.hh:582:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Plus]' + ./au/quantity.hh:620:37: required from 'constexpr auto au::operator+(au::Quantity, au::Quantity) [with U1 = au::Meters; U2 = au::Seconds; R1 = int; R2 = int]' au/error_examples.cc:55:26: required from here external/sysroot_x86_64//include/c++/10.3.0/type_traits:2562:11: error: no type named 'type' in 'struct std::common_type, au::Quantity >' 2562 | using common_type_t = typename common_type<_Tp...>::type; @@ -381,8 +381,13 @@ dimension. Then, figure out how to fix your expression so it has the right dime from ./au/au.hh:19, from au/error_examples.cc:15: ./au/quantity.hh: In instantiation of 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Plus]': - ./au/quantity.hh:598:37: required from 'constexpr auto au::operator+(au::Quantity, au::Quantity) [with U1 = au::Meters; U2 = au::Seconds; R1 = int; R2 = int]' + ./au/quantity.hh:620:37: required from 'constexpr auto au::operator+(au::Quantity, au::Quantity) [with U1 = au::Meters; U2 = au::Seconds; R1 = int; R2 = int]' au/error_examples.cc:55:26: required from here + ./au/quantity.hh:584:94: error: no type named 'type' in 'struct std::common_type, au::Quantity >' + 584 | std::is_same>::value, + | ^~~~~ + ./au/quantity.hh: In instantiation of 'static constexpr void au::Quantity::warn_if_integer_division() [with OtherRep = int; UnitT = au::Meters; RepT = int]': + ./au/quantity.hh:348:43: required from here ``` **Compiler error (MSVC x64 19.29)** @@ -393,12 +398,12 @@ dimension. Then, figure out how to fix your expression so it has the right dime T=au::Quantity, U=au::Quantity ] - D:\a\au\au\au.hh(3337): note: see reference to alias template instantiation 'std::common_type_t,U>' being compiled + D:\a\au\au\au.hh(3365): note: see reference to alias template instantiation 'std::common_type_t,U>' being compiled with [ U=au::Quantity ] - D:\a\au\au\au.hh(3375): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Plus>(T,U,Func)' being compiled + D:\a\au\au\au.hh(3403): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Plus>(T,U,Func)' being compiled with [ T=au::Quantity, @@ -406,73 +411,73 @@ dimension. Then, figure out how to fix your expression so it has the right dime Func=au::detail::Plus ] error_examples.cc(56): note: see reference to function template instantiation 'auto au::operator +(au::Quantity,au::Quantity)' being compiled - D:\a\au\au\au.hh(3337): error C2938: 'std::common_type_t' : Failed to specialize alias template - D:\a\au\au\au.hh(3339): error C2057: expected constant expression - D:\a\au\au\au.hh(3224): error C2668: 'au::Quantity::as': ambiguous call to overloaded function - D:\a\au\au\au.hh(2937): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' + D:\a\au\au\au.hh(3365): error C2938: 'std::common_type_t' : Failed to specialize alias template + D:\a\au\au\au.hh(3367): error C2057: expected constant expression + D:\a\au\au\au.hh(3252): error C2668: 'au::Quantity::as': ambiguous call to overloaded function + D:\a\au\au\au.hh(2943): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' with [ NewRep=TargetUnit::Rep, NewUnit=TargetUnit::Rep ] - D:\a\au\au\au.hh(2922): note: or 'auto au::Quantity::as(NewUnit) const' + D:\a\au\au\au.hh(2928): note: or 'auto au::Quantity::as(NewUnit) const' with [ NewRep=TargetUnit::Rep, Unit=au::Meters, NewUnit=au::Meters ] - D:\a\au\au\au.hh(3224): note: while trying to match the argument list '(Unit)' + D:\a\au\au\au.hh(3252): note: while trying to match the argument list '(Unit)' with [ Unit=au::Meters ] - D:\a\au\au\au.hh(3332): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled - D:\a\au\au\au.hh(3342): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled - D:\a\au\au\au.hh(3224): error C2668: 'au::Quantity::as': ambiguous call to overloaded function - D:\a\au\au\au.hh(2937): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' + D:\a\au\au\au.hh(3360): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled + D:\a\au\au\au.hh(3370): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled + D:\a\au\au\au.hh(3252): error C2668: 'au::Quantity::as': ambiguous call to overloaded function + D:\a\au\au\au.hh(2943): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' with [ NewRep=TargetUnit::Rep, NewUnit=TargetUnit::Rep ] - D:\a\au\au\au.hh(2922): note: or 'auto au::Quantity::as(NewUnit) const' + D:\a\au\au\au.hh(2928): note: or 'auto au::Quantity::as(NewUnit) const' with [ NewRep=TargetUnit::Rep, Unit=au::Seconds, NewUnit=au::Seconds ] - D:\a\au\au\au.hh(3224): note: while trying to match the argument list '(Unit)' + D:\a\au\au\au.hh(3252): note: while trying to match the argument list '(Unit)' with [ Unit=au::Seconds ] - D:\a\au\au\au.hh(3332): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled - D:\a\au\au\au.hh(3342): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled - D:\a\au\au\au.hh(3342): error C2672: 'operator __surrogate_func': no matching overloaded function found - D:\a\au\au\au.hh(3342): error C2893: Failed to specialize function template 'auto au::detail::Plus::operator ()(const T &,const U &) const' + D:\a\au\au\au.hh(3360): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled + D:\a\au\au\au.hh(3370): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled + D:\a\au\au\au.hh(3370): error C2672: 'operator __surrogate_func': no matching overloaded function found + D:\a\au\au\au.hh(3370): error C2893: Failed to specialize function template 'auto au::detail::Plus::operator ()(const T &,const U &) const' D:\a\au\au\au.hh(727): note: see declaration of 'au::detail::Plus::operator ()' - D:\a\au\au\au.hh(3342): note: With the following template arguments: - D:\a\au\au\au.hh(3342): note: 'T=void' - D:\a\au\au\au.hh(3342): note: 'U=void' + D:\a\au\au\au.hh(3370): note: With the following template arguments: + D:\a\au\au\au.hh(3370): note: 'T=void' + D:\a\au\au\au.hh(3370): note: 'U=void' ``` **Compiler error (MSVC x64 19.35)** ``` - C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.35.32215\include\type_traits(1215): error C2794: 'type': is not a member of any direct or indirect base class of 'std::common_type' + C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.36.32532\include\type_traits(1227): error C2794: 'type': is not a member of any direct or indirect base class of 'std::common_type' with [ T=au::Quantity, U=au::Quantity ] - D:\a\au\au\au.hh(3337): note: see reference to alias template instantiation 'std::common_type_t' being compiled + D:\a\au\au\au.hh(3365): note: see reference to alias template instantiation 'std::common_type_t' being compiled with [ T=au::Quantity, U=au::Quantity ] - D:\a\au\au\au.hh(3375): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Plus>(T,U,Func)' being compiled + D:\a\au\au\au.hh(3403): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Plus>(T,U,Func)' being compiled with [ T=au::Quantity, @@ -480,56 +485,56 @@ dimension. Then, figure out how to fix your expression so it has the right dime Func=au::detail::Plus ] error_examples.cc(56): note: see reference to function template instantiation 'auto au::operator +(au::Quantity,au::Quantity)' being compiled - D:\a\au\au\au.hh(3337): error C2938: 'std::common_type_t' : Failed to specialize alias template - D:\a\au\au\au.hh(3339): error C2057: expected constant expression - D:\a\au\au\au.hh(3224): error C2668: 'au::Quantity::as': ambiguous call to overloaded function - D:\a\au\au\au.hh(2937): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' + D:\a\au\au\au.hh(3365): error C2938: 'std::common_type_t' : Failed to specialize alias template + D:\a\au\au\au.hh(3367): error C2057: expected constant expression + D:\a\au\au\au.hh(3252): error C2668: 'au::Quantity::as': ambiguous call to overloaded function + D:\a\au\au\au.hh(2943): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' with [ NewRep=TargetUnit::Rep, NewUnit=TargetUnit::Rep ] - D:\a\au\au\au.hh(2922): note: or 'auto au::Quantity::as(NewUnit) const' + D:\a\au\au\au.hh(2928): note: or 'auto au::Quantity::as(NewUnit) const' with [ NewRep=TargetUnit::Rep, Unit=au::Meters, NewUnit=au::Meters ] - D:\a\au\au\au.hh(3224): note: while trying to match the argument list '(Unit)' + D:\a\au\au\au.hh(3252): note: while trying to match the argument list '(Unit)' with [ Unit=au::Meters ] - D:\a\au\au\au.hh(3332): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled - D:\a\au\au\au.hh(3342): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled - D:\a\au\au\au.hh(3224): error C2668: 'au::Quantity::as': ambiguous call to overloaded function - D:\a\au\au\au.hh(2937): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' + D:\a\au\au\au.hh(3360): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled + D:\a\au\au\au.hh(3370): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled + D:\a\au\au\au.hh(3252): error C2668: 'au::Quantity::as': ambiguous call to overloaded function + D:\a\au\au\au.hh(2943): note: could be 'auto au::Quantity::as::value,void>::type>(NewUnit) const' with [ NewRep=TargetUnit::Rep, NewUnit=TargetUnit::Rep ] - D:\a\au\au\au.hh(2922): note: or 'auto au::Quantity::as(NewUnit) const' + D:\a\au\au\au.hh(2928): note: or 'auto au::Quantity::as(NewUnit) const' with [ NewRep=TargetUnit::Rep, Unit=au::Seconds, NewUnit=au::Seconds ] - D:\a\au\au\au.hh(3224): note: while trying to match the argument list '(Unit)' + D:\a\au\au\au.hh(3252): note: while trying to match the argument list '(Unit)' with [ Unit=au::Seconds ] - D:\a\au\au\au.hh(3332): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled - D:\a\au\au\au.hh(3342): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled - D:\a\au\au\au.hh(3342): error C3889: call to object of class type 'au::detail::Plus': no matching call operator found + D:\a\au\au\au.hh(3360): note: see reference to function template instantiation 'auto au::rep_cast(au::Quantity)' being compiled + D:\a\au\au\au.hh(3370): note: see reference to function template instantiation 'auto au::detail::cast_to_common_type(au::Quantity)' being compiled + D:\a\au\au\au.hh(3370): error C3889: call to object of class type 'au::detail::Plus': no matching call operator found D:\a\au\au\au.hh(727): note: could be 'auto au::detail::Plus::operator ()(const T &,const U &) const' - D:\a\au\au\au.hh(3342): note: Failed to specialize function template 'auto au::detail::Plus::operator ()(const T &,const U &) const' - D:\a\au\au\au.hh(3342): note: With the following template arguments: - D:\a\au\au\au.hh(3342): note: 'T=void' - D:\a\au\au\au.hh(3342): note: 'U=void' + D:\a\au\au\au.hh(3370): note: Failed to specialize function template 'auto au::detail::Plus::operator ()(const T &,const U &) const' + D:\a\au\au\au.hh(3370): note: With the following template arguments: + D:\a\au\au\au.hh(3370): note: 'T=void' + D:\a\au\au\au.hh(3370): note: 'U=void' ``` ## Integer division forbidden {#integer-division-forbidden} @@ -572,10 +577,10 @@ floating point types. In file included from au/error_examples.cc:15: In file included from ./au/au.hh:19: In file included from ./au/math.hh:22: - ./au/quantity.hh:393:9: error: static_assert failed due to requirement '!uses_integer_division' "Integer division forbidden: use integer_quotient() if you really want it" + ./au/quantity.hh:415:9: error: static_assert failed due to requirement '!uses_integer_division' "Integer division forbidden: use integer_quotient() if you really want it" static_assert(!uses_integer_division, ^ ~~~~~~~~~~~~~~~~~~~~~~ - ./au/quantity.hh:326:9: note: in instantiation of function template specialization 'au::Quantity::warn_if_integer_division' requested here + ./au/quantity.hh:348:9: note: in instantiation of function template specialization 'au::Quantity::warn_if_integer_division' requested here warn_if_integer_division(); ^ au/error_examples.cc:63:39: note: in instantiation of function template specialization 'au::Quantity::operator/>, int>' requested here @@ -588,10 +593,10 @@ floating point types. In file included from au/error_examples.cc:15: In file included from ./au/au.hh:19: In file included from ./au/math.hh:22: - ./au/quantity.hh:393:9: error: static_assert failed due to requirement '!uses_integer_division' "Integer division forbidden: use integer_quotient() if you really want it" + ./au/quantity.hh:415:9: error: static_assert failed due to requirement '!uses_integer_division' "Integer division forbidden: use integer_quotient() if you really want it" static_assert(!uses_integer_division, ^ ~~~~~~~~~~~~~~~~~~~~~~ - ./au/quantity.hh:326:9: note: in instantiation of function template specialization 'au::Quantity::warn_if_integer_division' requested here + ./au/quantity.hh:348:9: note: in instantiation of function template specialization 'au::Quantity::warn_if_integer_division' requested here warn_if_integer_division(); ^ au/error_examples.cc:63:39: note: in instantiation of function template specialization 'au::Quantity::operator/>, int>' requested here @@ -601,26 +606,21 @@ floating point types. **Compiler error (gcc 10)** ``` - ./au/quantity.hh:562:94: error: no type named 'type' in 'struct std::common_type, au::Quantity >' - 562 | std::is_same>::value, - | ^~~~~ - ./au/quantity.hh: In instantiation of 'static constexpr void au::Quantity::warn_if_integer_division() [with OtherRep = int; UnitT = au::Meters; RepT = int]': - ./au/quantity.hh:326:43: required from here au/error_examples.cc:63:58: in 'constexpr' expansion of 'au::meters.au::QuantityMaker::operator()(60).au::Quantity::operator/ >, int>(au::miles.au::QuantityMaker::operator/((au::hour, const au::SingularNameFor())).au::QuantityMaker > >::operator()(65))' - ./au/quantity.hh:393:23: error: static assertion failed: Integer division forbidden: use integer_quotient() if you really want it - 393 | static_assert(!uses_integer_division, + ./au/quantity.hh:415:23: error: static assertion failed: Integer division forbidden: use integer_quotient() if you really want it + 415 | static_assert(!uses_integer_division, | ^~~~~~~~~~~~~~~~~~~~~~ ``` **Compiler error (MSVC x64 19.29)** ``` - D:\a\au\au\au.hh(3170): error C2338: Integer division forbidden: use integer_quotient() if you really want it - D:\a\au\au\au.hh(3103): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled + D:\a\au\au\au.hh(3198): error C2338: Integer division forbidden: use integer_quotient() if you really want it + D:\a\au\au\au.hh(3131): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled with [ OtherRep=int ] - D:\a\au\au\au.hh(3103): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled + D:\a\au\au\au.hh(3131): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled with [ OtherRep=int @@ -635,13 +635,8 @@ floating point types. **Compiler error (MSVC x64 19.35)** ``` - D:\a\au\au\au.hh(3170): error C2338: static_assert failed: 'Integer division forbidden: use integer_quotient() if you really want it' - D:\a\au\au\au.hh(3103): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled - with - [ - OtherRep=int - ] - D:\a\au\au\au.hh(3103): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled + D:\a\au\au\au.hh(3198): error C2338: static_assert failed: 'Integer division forbidden: use integer_quotient() if you really want it' + D:\a\au\au\au.hh(3131): note: see reference to function template instantiation 'void au::Quantity::warn_if_integer_division(void)' being compiled with [ OtherRep=int @@ -703,10 +698,10 @@ use a smaller target unit. ``` In file included from au/error_examples.cc:15: In file included from ./au/au.hh:19: - ./au/math.hh:231:5: error: static_assert failed due to requirement 'make_quantity>(int{1}).in(associated_unit(target_units) * au::Hertz{}) >= threshold || std::is_floating_point::value' "Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired" + ./au/math.hh:251:5: error: static_assert failed due to requirement 'make_quantity>(int{1}).in(associated_unit(target_units) * au::Hertz{}) >= threshold || std::is_floating_point::value' "Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired" static_assert( ^ - ./au/math.hh:247:56: note: in instantiation of function template specialization 'au::inverse_in, au::Hertz, int>' requested here + ./au/math.hh:267:56: note: in instantiation of function template specialization 'au::inverse_in, au::Hertz, int>' requested here return make_quantity>(inverse_in(target_units, q)); ^ au/error_examples.cc:71:5: note: in instantiation of function template specialization 'au::inverse_as, au::Hertz, int>' requested here @@ -718,10 +713,10 @@ use a smaller target unit. ``` In file included from au/error_examples.cc:15: In file included from ./au/au.hh:19: - ./au/math.hh:231:5: error: static_assert failed due to requirement 'make_quantity>(int{1}).in(associated_unit(target_units) * au::Hertz{}) >= threshold || std::is_floating_point::value' "Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired" + ./au/math.hh:251:5: error: static_assert failed due to requirement 'make_quantity>(int{1}).in(associated_unit(target_units) * au::Hertz{}) >= threshold || std::is_floating_point::value' "Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired" static_assert( ^ - ./au/math.hh:247:56: note: in instantiation of function template specialization 'au::inverse_in, au::Hertz, int>' requested here + ./au/math.hh:267:56: note: in instantiation of function template specialization 'au::inverse_in, au::Hertz, int>' requested here return make_quantity>(inverse_in(target_units, q)); ^ au/error_examples.cc:71:5: note: in instantiation of function template specialization 'au::inverse_as, au::Hertz, int>' requested here @@ -734,19 +729,19 @@ use a smaller target unit. In file included from ./au/au.hh:19, from au/error_examples.cc:15: ./au/math.hh: In instantiation of 'constexpr auto au::inverse_in(TargetUnits, au::Quantity) [with TargetUnits = au::QuantityMaker; U = au::Hertz; R = int]': - ./au/math.hh:247:66: required from 'constexpr auto au::inverse_as(TargetUnits, au::Quantity) [with TargetUnits = au::QuantityMaker; U = au::Hertz; R = int]' + ./au/math.hh:267:66: required from 'constexpr auto au::inverse_as(TargetUnits, au::Quantity) [with TargetUnits = au::QuantityMaker; U = au::Hertz; R = int]' au/error_examples.cc:71:33: required from here - ./au/math.hh:232:98: error: static assertion failed: Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired - 232 | make_quantity>(R{1}).in(associated_unit(target_units) * U{}) >= threshold || + ./au/math.hh:252:98: error: static assertion failed: Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired + 252 | make_quantity>(R{1}).in(associated_unit(target_units) * U{}) >= threshold || | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ - 233 | std::is_floating_point::value, + 253 | std::is_floating_point::value, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` **Compiler error (MSVC x64 19.29)** ``` - D:\a\au\au\au.hh(4492): error C2338: Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired - D:\a\au\au\au.hh(4507): note: see reference to function template instantiation 'auto au::inverse_in(TargetUnits,au::Quantity)' being compiled + D:\a\au\au\au.hh(4562): error C2338: Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired + D:\a\au\au\au.hh(4577): note: see reference to function template instantiation 'auto au::inverse_in(TargetUnits,au::Quantity)' being compiled with [ TargetUnits=au::QuantityMaker @@ -760,8 +755,8 @@ use a smaller target unit. **Compiler error (MSVC x64 19.35)** ``` - D:\a\au\au\au.hh(4492): error C2338: static_assert failed: 'Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired' - D:\a\au\au\au.hh(4507): note: see reference to function template instantiation 'auto au::inverse_in(TargetUnits,au::Quantity)' being compiled + D:\a\au\au\au.hh(4562): error C2338: static_assert failed: 'Dangerous inversion risking truncation to 0; must supply explicit Rep if truly desired' + D:\a\au\au\au.hh(4577): note: see reference to function template instantiation 'auto au::inverse_in(TargetUnits,au::Quantity)' being compiled with [ TargetUnits=au::QuantityMaker @@ -870,8 +865,7 @@ casting automatically when possible. [ B=au::Seconds, T=double - ] - + ] ``` ## Broken strict total ordering @@ -981,19 +975,19 @@ ordering! ./au/packs.hh:303:5: note: in instantiation of template class 'au::LexicographicTotalOrdering' requested here ./au/packs.hh:303:5: note: in instantiation of template class 'au::LexicographicTotalOrdering' requested here ./au/packs.hh:303:5: note: in instantiation of template class 'au::LexicographicTotalOrdering' requested here - ./au/unit_of_measure.hh:854:40: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ./au/unit_of_measure.hh:860:40: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) struct InOrderFor : LexicographicTotalOrdering, au::Quantity>' requested here + ./au/quantity.hh:719:7: note: in instantiation of template class 'au::CommonQuantity, au::Quantity>' requested here : au::CommonQuantity, au::Quantity> {}; ^ external/llvm_14_toolchain_llvm/bin/../include/c++/v1/type_traits:2388:25: note: in instantiation of template class 'std::common_type, au::Quantity>' requested here template using common_type_t = typename common_type<_Tp...>::type; ^ - ./au/quantity.hh:560:20: note: in instantiation of template type alias 'common_type_t' requested here + ./au/quantity.hh:582:20: note: in instantiation of template type alias 'common_type_t' requested here using C = std::common_type_t; ^ - ./au/quantity.hh:572:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Equal>' requested here + ./au/quantity.hh:594:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Equal>' requested here return detail::using_common_type(q1, q2, detail::equal); ^ au/error_examples.cc:98:25: note: in instantiation of function template specialization 'au::operator==' requested here @@ -1019,19 +1013,19 @@ ordering! ./au/packs.hh:303:5: note: in instantiation of template class 'au::LexicographicTotalOrdering' requested here ./au/packs.hh:303:5: note: in instantiation of template class 'au::LexicographicTotalOrdering' requested here ./au/packs.hh:303:5: note: in instantiation of template class 'au::LexicographicTotalOrdering' requested here - ./au/unit_of_measure.hh:854:40: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ./au/unit_of_measure.hh:860:40: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) struct InOrderFor : LexicographicTotalOrdering, au::Quantity, void>' requested here + ./au/quantity.hh:719:7: note: in instantiation of template class 'au::CommonQuantity, au::Quantity, void>' requested here : au::CommonQuantity, au::Quantity> {}; ^ external/llvm_11_toolchain_llvm/bin/../include/c++/v1/type_traits:2462:25: note: in instantiation of template class 'std::__1::common_type, au::Quantity>' requested here template using common_type_t = typename common_type<_Tp...>::type; ^ - ./au/quantity.hh:560:20: note: in instantiation of template type alias 'common_type_t' requested here + ./au/quantity.hh:582:20: note: in instantiation of template type alias 'common_type_t' requested here using C = std::common_type_t; ^ - ./au/quantity.hh:572:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Equal>' requested here + ./au/quantity.hh:594:20: note: in instantiation of function template specialization 'au::detail::using_common_type, au::Quantity, au::detail::Equal>' requested here return detail::using_common_type(q1, q2, detail::equal); ^ au/error_examples.cc:98:25: note: in instantiation of function template specialization 'au::operator==' requested here @@ -1050,32 +1044,32 @@ ordering! ./au/packs.hh: In instantiation of 'struct au::LexicographicTotalOrdering': ./au/packs.hh:298:8: recursively required from 'struct au::LexicographicTotalOrdering' ./au/packs.hh:298:8: required from 'struct au::LexicographicTotalOrdering' - ./au/unit_of_measure.hh:854:8: required from 'struct au::InOrderFor' - ./au/unit_of_measure.hh:488:8: required from 'struct au::InOrderFor' + ./au/unit_of_measure.hh:860:8: required from 'struct au::InOrderFor' + ./au/unit_of_measure.hh:494:8: required from 'struct au::InOrderFor' ./au/packs.hh:383:8: required from 'struct au::FlatDedupedTypeList, au::CommonUnit >' - ./au/unit_of_measure.hh:526:8: required from 'struct au::ComputeCommonUnit' - ./au/quantity.hh:683:8: required from 'struct au::CommonQuantity, au::Quantity, void>' - ./au/quantity.hh:696:8: required from 'struct std::common_type, au::Quantity >' + ./au/unit_of_measure.hh:532:8: required from 'struct au::ComputeCommonUnit' + ./au/quantity.hh:705:8: required from 'struct au::CommonQuantity, au::Quantity, void>' + ./au/quantity.hh:718:8: required from 'struct std::common_type, au::Quantity >' external/sysroot_x86_64//include/c++/10.3.0/type_traits:2562:11: required by substitution of 'template using common_type_t = typename std::common_type::type [with _Tp = {au::Quantity, au::Quantity}]' - ./au/quantity.hh:560:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Equal]' - ./au/quantity.hh:572:37: required from 'constexpr bool au::operator==(au::Quantity, au::Quantity) [with U1 = au::Quarterfeet; U2 = au::Trinches; R1 = int; R2 = int]' + ./au/quantity.hh:582:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Equal]' + ./au/quantity.hh:594:37: required from 'constexpr bool au::operator==(au::Quantity, au::Quantity) [with U1 = au::Quarterfeet; U2 = au::Trinches; R1 = int; R2 = int]' au/error_examples.cc:98:39: required from here ./au/packs.hh:287:39: error: static assertion failed: Broken strict total ordering: distinct input types compare equal 287 | static_assert(std::is_same::value, | ^~~~~ ./au/packs.hh: In instantiation of 'struct au::LexicographicTotalOrdering': ./au/packs.hh:298:8: required from 'struct au::LexicographicTotalOrdering' - ./au/unit_of_measure.hh:854:8: [ skipping 8 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] - ./au/unit_of_measure.hh:438:8: required from 'struct au::HasSameDimension, au::Trinches>' + ./au/unit_of_measure.hh:860:8: [ skipping 8 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] + ./au/unit_of_measure.hh:444:8: required from 'struct au::HasSameDimension, au::Trinches>' ./au/stdx/type_traits.hh:38:61: required from 'struct au::stdx::conjunction, au::Trinches>, au::detail::HasSameMagnitude, au::Trinches> >' - ./au/unit_of_measure.hh:453:8: required from 'struct au::AreUnitsQuantityEquivalent, au::Trinches>' - ./au/unit_of_measure.hh:515:8: required from 'struct au::detail::FirstMatchingUnit, au::CommonUnit >' - ./au/unit_of_measure.hh:526:8: required from 'struct au::ComputeCommonUnit' - ./au/quantity.hh:683:8: required from 'struct au::CommonQuantity, au::Quantity, void>' - ./au/quantity.hh:696:8: required from 'struct std::common_type, au::Quantity >' + ./au/unit_of_measure.hh:459:8: required from 'struct au::AreUnitsQuantityEquivalent, au::Trinches>' + ./au/unit_of_measure.hh:521:8: required from 'struct au::detail::FirstMatchingUnit, au::CommonUnit >' + ./au/unit_of_measure.hh:532:8: required from 'struct au::ComputeCommonUnit' + ./au/quantity.hh:705:8: required from 'struct au::CommonQuantity, au::Quantity, void>' + ./au/quantity.hh:718:8: required from 'struct std::common_type, au::Quantity >' external/sysroot_x86_64//include/c++/10.3.0/type_traits:2562:11: required by substitution of 'template using common_type_t = typename std::common_type::type [with _Tp = {au::Quantity, au::Quantity}]' - ./au/quantity.hh:560:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Equal]' - ./au/quantity.hh:572:37: required from 'constexpr bool au::operator==(au::Quantity, au::Quantity) [with U1 = au::Quarterfeet; U2 = au::Trinches; R1 = int; R2 = int]' + ./au/quantity.hh:582:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Equal]' + ./au/quantity.hh:594:37: required from 'constexpr bool au::operator==(au::Quantity, au::Quantity) [with U1 = au::Quarterfeet; U2 = au::Trinches; R1 = int; R2 = int]' au/error_examples.cc:98:39: required from here ./au/packs.hh:287:39: error: static assertion failed: Broken strict total ordering: distinct input types compare equal In file included from ./au/conversion_policy.hh:22, @@ -1086,24 +1080,23 @@ ordering! ./au/unit_of_measure.hh: In instantiation of 'struct au::CommonUnit': ./au/packs.hh:203:7: required by substitution of 'template using DimMemberT = typename U::Dim [with U = au::CommonUnit]' ./au/packs.hh:205:8: required from 'struct au::detail::DimImpl >' - ./au/unit_of_measure.hh:438:8: required from 'struct au::HasSameDimension, au::Trinches>' + ./au/unit_of_measure.hh:444:8: required from 'struct au::HasSameDimension, au::Trinches>' ./au/stdx/type_traits.hh:38:61: required from 'struct au::stdx::conjunction, au::Trinches>, au::detail::HasSameMagnitude, au::Trinches> >' - ./au/unit_of_measure.hh:453:8: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] - ./au/unit_of_measure.hh:526:8: required from 'struct au::ComputeCommonUnit' - ./au/quantity.hh:683:8: required from 'struct au::CommonQuantity, au::Quantity, void>' - ./au/quantity.hh:696:8: required from 'struct std::common_type, au::Quantity >' + ./au/unit_of_measure.hh:459:8: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] + ./au/unit_of_measure.hh:532:8: required from 'struct au::ComputeCommonUnit' + ./au/quantity.hh:705:8: required from 'struct au::CommonQuantity, au::Quantity, void>' + ./au/quantity.hh:718:8: required from 'struct std::common_type, au::Quantity >' external/sysroot_x86_64//include/c++/10.3.0/type_traits:2562:11: required by substitution of 'template using common_type_t = typename std::common_type::type [with _Tp = {au::Quantity, au::Quantity}]' - ./au/quantity.hh:560:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Equal]' - ./au/quantity.hh:572:37: required from 'constexpr bool au::operator==(au::Quantity, au::Quantity) [with U1 = au::Quarterfeet; U2 = au::Trinches; R1 = int; R2 = int]' + ./au/quantity.hh:582:11: required from 'constexpr auto au::detail::using_common_type(T, U, Func) [with T = au::Quantity; U = au::Quantity; Func = au::detail::Equal]' + ./au/quantity.hh:594:37: required from 'constexpr bool au::operator==(au::Quantity, au::Quantity) [with U1 = au::Quarterfeet; U2 = au::Trinches; R1 = int; R2 = int]' au/error_examples.cc:98:39: required from here - ./au/unit_of_measure.hh:478:70: error: static assertion failed: Elements must be listed in ascending order - 478 | static_assert(AreElementsInOrder>::value, + ./au/unit_of_measure.hh:484:70: error: static assertion failed: Elements must be listed in ascending order + 484 | static_assert(AreElementsInOrder>::value, | ^~~~~ ``` **Compiler error (MSVC x64 19.29)** ``` - D:\a\au\au\au.hh(4906): note: see reference to function template instantiation 'std::basic_ostream> &std::operator <<>(std::basic_ostream> &,const char *)' being compiled D:\a\au\au\au.hh(1037): error C2338: Broken strict total ordering: distinct input types compare equal D:\a\au\au\au.hh(1068): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with @@ -1135,13 +1128,13 @@ ordering! A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(2710): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled + D:\a\au\au\au.hh(2716): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with [ A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(2338): note: see reference to class template instantiation 'au::InOrderFor' being compiled + D:\a\au\au\au.hh(2344): note: see reference to class template instantiation 'au::InOrderFor' being compiled with [ A=au::Quarterfeet, @@ -1154,33 +1147,33 @@ ordering! T=au::Quarterfeet, H=au::Trinches ] - D:\a\au\au\au.hh(2373): note: see reference to class template instantiation 'au::FlatDedupedTypeList,au::CommonUnit>' being compiled + D:\a\au\au\au.hh(2379): note: see reference to class template instantiation 'au::FlatDedupedTypeList,au::CommonUnit>' being compiled with [ T=au::Quarterfeet ] - D:\a\au\au\au.hh(2373): note: see reference to alias template instantiation 'au::FlatDedupedTypeListT' being compiled - D:\a\au\au\au.hh(2377): note: see reference to alias template instantiation 'au::ComputeCommonUnitImpl' being compiled - D:\a\au\au\au.hh(3463): note: see reference to class template instantiation 'au::ComputeCommonUnit' being compiled + D:\a\au\au\au.hh(2379): note: see reference to alias template instantiation 'au::FlatDedupedTypeListT' being compiled + D:\a\au\au\au.hh(2383): note: see reference to alias template instantiation 'au::ComputeCommonUnitImpl' being compiled + D:\a\au\au\au.hh(3491): note: see reference to class template instantiation 'au::ComputeCommonUnit' being compiled with [ U1=au::Quarterfeet, U2=au::Trinches ] - D:\a\au\au\au.hh(3463): note: see reference to alias template instantiation 'au::CommonUnitT' being compiled - D:\a\au\au\au.hh(3474): note: see reference to class template instantiation 'au::CommonQuantity,au::Quantity,void>' being compiled - D:\a\au\au\au.hh(3337): note: see reference to class template instantiation 'std::common_type' being compiled + D:\a\au\au\au.hh(3491): note: see reference to alias template instantiation 'au::CommonUnitT' being compiled + D:\a\au\au\au.hh(3502): note: see reference to class template instantiation 'au::CommonQuantity,au::Quantity,void>' being compiled + D:\a\au\au\au.hh(3365): note: see reference to class template instantiation 'std::common_type' being compiled with [ T=au::Quantity, U=au::Quantity ] - D:\a\au\au\au.hh(3337): note: see reference to alias template instantiation 'std::common_type_t,U>' being compiled + D:\a\au\au\au.hh(3365): note: see reference to alias template instantiation 'std::common_type_t,U>' being compiled with [ U=au::Quantity ] - D:\a\au\au\au.hh(3349): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Equal>(T,U,Func)' being compiled + D:\a\au\au\au.hh(3377): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Equal>(T,U,Func)' being compiled with [ T=au::Quantity, @@ -1188,38 +1181,37 @@ ordering! Func=au::detail::Equal ] error_examples.cc(99): note: see reference to function template instantiation 'bool au::operator ==(au::Quantity,au::Quantity)' being compiled - D:\a\au\au\au.hh(2328): error C2338: Elements must be listed in ascending order + D:\a\au\au\au.hh(2334): error C2338: Elements must be listed in ascending order ``` **Compiler error (MSVC x64 19.35)** ``` - D:\a\au\au\au.hh(4906): note: see reference to function template instantiation 'std::basic_ostream> &std::operator <<>(std::basic_ostream> &,const char *)' being compiled D:\a\au\au\au.hh(1037): error C2338: static_assert failed: 'Broken strict total ordering: distinct input types compare equal' - D:\a\au\au\au.hh(1068): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled + D:\a\au\au\au.hh(1053): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with [ A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(1068): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled + D:\a\au\au\au.hh(1053): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with [ A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(1068): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled + D:\a\au\au\au.hh(1053): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with [ A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(1068): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled + D:\a\au\au\au.hh(1053): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with [ A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(1068): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled + D:\a\au\au\au.hh(1053): note: see reference to class template instantiation 'au::LexicographicTotalOrdering' being compiled with [ A=au::Quarterfeet, @@ -1231,7 +1223,7 @@ ordering! A=au::Quarterfeet, B=au::Trinches ] - D:\a\au\au\au.hh(2338): note: see reference to class template instantiation 'au::InOrderFor' being compiled + D:\a\au\au\au.hh(2344): note: see reference to class template instantiation 'au::InOrderFor' being compiled with [ A=au::Quarterfeet, @@ -1244,49 +1236,49 @@ ordering! T=au::Quarterfeet, H=au::Trinches ] - D:\a\au\au\au.hh(2373): note: see reference to class template instantiation 'au::FlatDedupedTypeList,au::CommonUnit>' being compiled + D:\a\au\au\au.hh(2379): note: see reference to class template instantiation 'au::FlatDedupedTypeList,au::CommonUnit>' being compiled with [ T=au::Quarterfeet ] - D:\a\au\au\au.hh(2373): note: see reference to alias template instantiation 'au::FlatDedupedTypeListT' being compiled + D:\a\au\au\au.hh(2379): note: see reference to alias template instantiation 'au::FlatDedupedTypeListT' being compiled with [ U1=au::Quarterfeet, U2=au::Trinches ] - D:\a\au\au\au.hh(2377): note: see reference to alias template instantiation 'au::ComputeCommonUnitImpl' being compiled + D:\a\au\au\au.hh(2383): note: see reference to alias template instantiation 'au::ComputeCommonUnitImpl' being compiled with [ U1=au::Quarterfeet, U2=au::Trinches ] - D:\a\au\au\au.hh(3463): note: see reference to class template instantiation 'au::ComputeCommonUnit' being compiled + D:\a\au\au\au.hh(3491): note: see reference to class template instantiation 'au::ComputeCommonUnit' being compiled with [ U1=au::Quarterfeet, U2=au::Trinches ] - D:\a\au\au\au.hh(3463): note: see reference to alias template instantiation 'au::CommonUnitT' being compiled + D:\a\au\au\au.hh(3491): note: see reference to alias template instantiation 'au::CommonUnitT' being compiled with [ U1=au::Quarterfeet, U2=au::Trinches ] - D:\a\au\au\au.hh(3474): note: see reference to class template instantiation 'au::CommonQuantity,au::Quantity,void>' being compiled - D:\a\au\au\au.hh(3337): note: see reference to class template instantiation 'std::common_type' being compiled + D:\a\au\au\au.hh(3502): note: see reference to class template instantiation 'au::CommonQuantity,au::Quantity,void>' being compiled + D:\a\au\au\au.hh(3365): note: see reference to class template instantiation 'std::common_type' being compiled with [ T=au::Quantity, U=au::Quantity ] - D:\a\au\au\au.hh(3337): note: see reference to alias template instantiation 'std::common_type_t' being compiled + D:\a\au\au\au.hh(3365): note: see reference to alias template instantiation 'std::common_type_t' being compiled with [ T=au::Quantity, U=au::Quantity ] - D:\a\au\au\au.hh(3349): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Equal>(T,U,Func)' being compiled + D:\a\au\au\au.hh(3377): note: see reference to function template instantiation 'auto au::detail::using_common_type,au::Quantity,au::detail::Equal>(T,U,Func)' being compiled with [ T=au::Quantity, @@ -1294,6 +1286,6 @@ ordering! Func=au::detail::Equal ] error_examples.cc(99): note: see reference to function template instantiation 'bool au::operator ==(au::Quantity,au::Quantity)' being compiled - D:\a\au\au\au.hh(2328): error C2338: static_assert failed: 'Elements must be listed in ascending order' + D:\a\au\au\au.hh(2334): error C2338: static_assert failed: 'Elements must be listed in ascending order' ```