diff --git a/doc/DESIGN.md b/doc/DESIGN.md index 8a67dfa8..ee6fc03e 100644 --- a/doc/DESIGN.md +++ b/doc/DESIGN.md @@ -50,8 +50,8 @@ point of view the most important is a quantity. Quantity is a concrete amount of a unit for a specified dimension with a specific representation: ```cpp -units::quantity d1(123); -auto d2 = 123km; // stde::units::quantity +units::quantity d1(123); +auto d2 = 123km; // stde::units::quantity ``` There are C++ concepts provided for each such quantity type: @@ -418,8 +418,8 @@ template<> struct downcasting_traits> : downcast ``` ```cpp -struct kilometer : unit {}; -template<> struct downcasting_traits> : downcast_to {}; +struct kilometre : unit {}; +template<> struct downcasting_traits> : downcast_to {}; ``` @@ -446,33 +446,33 @@ concept Velocity = Quantity && std::Same> {}; -template<> struct downcasting_traits> : downcast_to {}; +struct metre : unit> {}; +template<> struct downcasting_traits> : downcast_to {}; ``` - units with prefixes ```cpp -struct kilometer : kilo {}; -template<> struct downcasting_traits> : downcast_to {}; +struct kilometre : kilo {}; +template<> struct downcasting_traits> : downcast_to {}; ``` - derived units ```cpp -struct kilometer_per_hour : derived_unit {}; -template<> struct downcasting_traits> : downcast_to {}; +struct kilometre_per_hour : derived_unit {}; +template<> struct downcasting_traits> : downcast_to {}; ``` 5. Provide user-defined literals for the most important units: ```cpp inline namespace literals { - constexpr auto operator""_mps(unsigned long long l) { return quantity(l); } - constexpr auto operator""_mps(long double l) { return quantity(l); } + constexpr auto operator""_mps(unsigned long long l) { return quantity(l); } + constexpr auto operator""_mps(long double l) { return quantity(l); } - constexpr auto operator""_kmph(unsigned long long l) { return quantity(l); } - constexpr auto operator""_kmph(long double l) { return quantity(l); } + constexpr auto operator""_kmph(unsigned long long l) { return quantity(l); } + constexpr auto operator""_kmph(long double l) { return quantity(l); } } ``` diff --git a/example/example.cpp b/example/example.cpp index ac8d4d39..a222eb02 100644 --- a/example/example.cpp +++ b/example/example.cpp @@ -39,12 +39,12 @@ void example_1(V v, T t) { const stde::units::Length distance = v * t; std::cout << "A car driving " << v.count() << " km/h in a time of " << t.count() << " minutes will pass " - << stde::units::quantity_cast>(distance).count() << " meters.\n"; + << stde::units::quantity_cast>(distance).count() << " metres.\n"; } void example_2(double distance_v, double duration_v) { - stde::units::quantity distance(distance_v); + stde::units::quantity distance(distance_v); stde::units::quantity duration(duration_v); const auto kmph = avg_speed(distance, duration); std::cout << "Average speed of a car that makes " << distance.count() << " km in " diff --git a/src/include/units/acceleration.h b/src/include/units/acceleration.h index d1725be2..ea3e06c1 100644 --- a/src/include/units/acceleration.h +++ b/src/include/units/acceleration.h @@ -32,14 +32,14 @@ namespace std::experimental::units { template concept bool Acceleration = Quantity && std::Same; - struct meter_per_second_sq : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct metre_per_second_sq : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { // mps_sq - constexpr auto operator""mps_sq(unsigned long long l) { return quantity(l); } - constexpr auto operator""mps_sq(long double l) { return quantity(l); } + constexpr auto operator""mps_sq(unsigned long long l) { return quantity(l); } + constexpr auto operator""mps_sq(long double l) { return quantity(l); } } // namespace literals diff --git a/src/include/units/area.h b/src/include/units/area.h index d75275da..19ddab67 100644 --- a/src/include/units/area.h +++ b/src/include/units/area.h @@ -32,17 +32,17 @@ namespace std::experimental::units { template concept bool Area = Quantity && std::Same; - struct square_millimeter : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct square_millimetre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct square_centimeter : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct square_centimetre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct square_meter : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct square_metre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct square_kilometer : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct square_kilometre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; struct square_foot : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; @@ -50,20 +50,20 @@ namespace std::experimental::units { inline namespace literals { // sq_mm - constexpr auto operator""sq_mm(unsigned long long l) { return quantity(l); } - constexpr auto operator""sq_mm(long double l) { return quantity(l); } + constexpr auto operator""sq_mm(unsigned long long l) { return quantity(l); } + constexpr auto operator""sq_mm(long double l) { return quantity(l); } // sq_cm - constexpr auto operator""sq_cm(unsigned long long l) { return quantity(l); } - constexpr auto operator""sq_cm(long double l) { return quantity(l); } + constexpr auto operator""sq_cm(unsigned long long l) { return quantity(l); } + constexpr auto operator""sq_cm(long double l) { return quantity(l); } // sq_m - constexpr auto operator""sq_m(unsigned long long l) { return quantity(l); } - constexpr auto operator""sq_m(long double l) { return quantity(l); } + constexpr auto operator""sq_m(unsigned long long l) { return quantity(l); } + constexpr auto operator""sq_m(long double l) { return quantity(l); } // sq_km - constexpr auto operator""sq_km(unsigned long long l) { return quantity(l); } - constexpr auto operator""sq_km(long double l) { return quantity(l); } + constexpr auto operator""sq_km(unsigned long long l) { return quantity(l); } + constexpr auto operator""sq_km(long double l) { return quantity(l); } } // namespace literals diff --git a/src/include/units/capacitance.h b/src/include/units/capacitance.h index a6afd445..a0e738e3 100644 --- a/src/include/units/capacitance.h +++ b/src/include/units/capacitance.h @@ -34,7 +34,7 @@ namespace std::experimental::units { template concept bool Capacitance = Quantity && std::Same; - struct farad : derived_unit {}; + struct farad : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { diff --git a/src/include/units/energy.h b/src/include/units/energy.h index f3f787cc..4d0a3c9b 100644 --- a/src/include/units/energy.h +++ b/src/include/units/energy.h @@ -34,7 +34,7 @@ namespace std::experimental::units { template concept bool Energy = Quantity && std::Same; - struct joule : derived_unit {}; + struct joule : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { diff --git a/src/include/units/force.h b/src/include/units/force.h index fc5cebf9..d594c054 100644 --- a/src/include/units/force.h +++ b/src/include/units/force.h @@ -35,7 +35,7 @@ namespace std::experimental::units { template concept bool Force = Quantity && std::Same; - struct newton : derived_unit {}; + struct newton : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { diff --git a/src/include/units/length.h b/src/include/units/length.h index aead23b3..3879e750 100644 --- a/src/include/units/length.h +++ b/src/include/units/length.h @@ -34,35 +34,35 @@ namespace std::experimental::units { concept bool Length = Quantity && std::Same; // SI units - struct meter : unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct metre : unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct millimeter : milli {}; - template<> struct downcasting_traits> : downcast_to {}; + struct millimetre : milli {}; + template<> struct downcasting_traits> : downcast_to {}; - struct centimeter : centi {}; - template<> struct downcasting_traits> : downcast_to {}; + struct centimetre : centi {}; + template<> struct downcasting_traits> : downcast_to {}; - struct kilometer : kilo {}; - template<> struct downcasting_traits> : downcast_to {}; + struct kilometre : kilo {}; + template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { // mm - constexpr auto operator""mm(unsigned long long l) { return quantity(l); } - constexpr auto operator""mm(long double l) { return quantity(l); } + constexpr auto operator""mm(unsigned long long l) { return quantity(l); } + constexpr auto operator""mm(long double l) { return quantity(l); } // cm - constexpr auto operator""cm(unsigned long long l) { return quantity(l); } - constexpr auto operator""cm(long double l) { return quantity(l); } + constexpr auto operator""cm(unsigned long long l) { return quantity(l); } + constexpr auto operator""cm(long double l) { return quantity(l); } // m - constexpr auto operator""m(unsigned long long l) { return quantity(l); } - constexpr auto operator""m(long double l) { return quantity(l); } + constexpr auto operator""m(unsigned long long l) { return quantity(l); } + constexpr auto operator""m(long double l) { return quantity(l); } // km - constexpr auto operator""km(unsigned long long l) { return quantity(l); } - constexpr auto operator""km(long double l) { return quantity(l); } + constexpr auto operator""km(unsigned long long l) { return quantity(l); } + constexpr auto operator""km(long double l) { return quantity(l); } } // namespace literals diff --git a/src/include/units/power.h b/src/include/units/power.h index f6898d1a..00fcedac 100644 --- a/src/include/units/power.h +++ b/src/include/units/power.h @@ -33,7 +33,7 @@ namespace std::experimental::units { template concept bool Power = Quantity && std::Same; - struct watt : derived_unit {}; + struct watt : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { diff --git a/src/include/units/pressure.h b/src/include/units/pressure.h index 214a5d94..73804590 100644 --- a/src/include/units/pressure.h +++ b/src/include/units/pressure.h @@ -33,7 +33,7 @@ namespace std::experimental::units { template concept bool Pressure = Quantity && std::Same; - struct pascal : derived_unit {}; + struct pascal : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { diff --git a/src/include/units/velocity.h b/src/include/units/velocity.h index d65d8286..99c8ac79 100644 --- a/src/include/units/velocity.h +++ b/src/include/units/velocity.h @@ -33,11 +33,11 @@ namespace std::experimental::units { template concept bool Velocity = Quantity && std::Same; - struct meter_per_second : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct metre_per_second : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct kilometer_per_hour : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct kilometre_per_hour : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; struct mile_per_hour : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; @@ -45,12 +45,12 @@ namespace std::experimental::units { inline namespace literals { // mps - constexpr auto operator""mps(unsigned long long l) { return quantity(l); } - constexpr auto operator""mps(long double l) { return quantity(l); } + constexpr auto operator""mps(unsigned long long l) { return quantity(l); } + constexpr auto operator""mps(long double l) { return quantity(l); } // kmph - constexpr auto operator""kmph(unsigned long long l) { return quantity(l); } - constexpr auto operator""kmph(long double l) { return quantity(l); } + constexpr auto operator""kmph(unsigned long long l) { return quantity(l); } + constexpr auto operator""kmph(long double l) { return quantity(l); } // mph constexpr auto operator""mph(unsigned long long l) { return quantity(l); } diff --git a/src/include/units/voltage.h b/src/include/units/voltage.h index becd8669..12ea01fa 100644 --- a/src/include/units/voltage.h +++ b/src/include/units/voltage.h @@ -36,7 +36,7 @@ namespace std::experimental::units { template concept bool Voltage = Quantity && std::Same; - struct volt : derived_unit {}; + struct volt : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; inline namespace literals { diff --git a/src/include/units/volume.h b/src/include/units/volume.h index d13d0dd7..106edc1a 100644 --- a/src/include/units/volume.h +++ b/src/include/units/volume.h @@ -32,17 +32,17 @@ namespace std::experimental::units { template concept bool Volume = Quantity && std::Same; - struct cubic_millimeter : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct cubic_millimetre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct cubic_centimeter : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct cubic_centimetre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct cubic_meter : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct cubic_metre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; - struct cubic_kilometer : derived_unit {}; - template<> struct downcasting_traits> : downcast_to {}; + struct cubic_kilometre : derived_unit {}; + template<> struct downcasting_traits> : downcast_to {}; struct cubic_foot : derived_unit {}; template<> struct downcasting_traits> : downcast_to {}; @@ -50,20 +50,20 @@ namespace std::experimental::units { inline namespace literals { // cub_mm - constexpr auto operator""cub_mm(unsigned long long l) { return quantity(l); } - constexpr auto operator""cub_mm(long double l) { return quantity(l); } + constexpr auto operator""cub_mm(unsigned long long l) { return quantity(l); } + constexpr auto operator""cub_mm(long double l) { return quantity(l); } // cub_cm - constexpr auto operator""cub_cm(unsigned long long l) { return quantity(l); } - constexpr auto operator""cub_cm(long double l) { return quantity(l); } + constexpr auto operator""cub_cm(unsigned long long l) { return quantity(l); } + constexpr auto operator""cub_cm(long double l) { return quantity(l); } // cub_m - constexpr auto operator""cub_m(unsigned long long l) { return quantity(l); } - constexpr auto operator""cub_m(long double l) { return quantity(l); } + constexpr auto operator""cub_m(unsigned long long l) { return quantity(l); } + constexpr auto operator""cub_m(long double l) { return quantity(l); } // cub_km - constexpr auto operator""cub_km(unsigned long long l) { return quantity(l); } - constexpr auto operator""cub_km(long double l) { return quantity(l); } + constexpr auto operator""cub_km(unsigned long long l) { return quantity(l); } + constexpr auto operator""cub_km(long double l) { return quantity(l); } } // namespace literals diff --git a/test/unit_test/test_quantity.cpp b/test/unit_test/test_quantity.cpp index 073a6a02..2322869b 100644 --- a/test/unit_test/test_quantity.cpp +++ b/test/unit_test/test_quantity.cpp @@ -77,76 +77,76 @@ namespace { // class invariants // constexpr quantity q; // should a static_assert - // constexpr quantity> error(0m); // should trigger a static_assert + // constexpr quantity> error(0m); // should trigger a static_assert // constexpr quantity error(0); // should trigger a static_assert // constexpr quantity>, int> error(0); // should trigger a static_assert // member types - static_assert(std::is_same_v::rep, int>); - static_assert(std::is_same_v::rep, double>); - static_assert(std::is_same_v::unit, meter>); - static_assert(std::is_same_v::unit, kilometer>); + static_assert(std::is_same_v::rep, int>); + static_assert(std::is_same_v::rep, double>); + static_assert(std::is_same_v::unit, metre>); + static_assert(std::is_same_v::unit, kilometre>); // constructors - static_assert(quantity().count() == 0); - constexpr quantity km{1000}; + static_assert(quantity().count() == 0); + constexpr quantity km{1000}; static_assert(km.count() == 1000); - static_assert(quantity(km).count() == km.count()); + static_assert(quantity(km).count() == km.count()); - static_assert(quantity(1).count() == 1); - static_assert(quantity(my_value(1)).count() == 1); - static_assert(quantity>(1).count() == 1); - // static_assert(quantity(1.0).count() == 1); // should not compile - // static_assert(quantity(my_value(1.0)).count() == 1); // should not compile - // static_assert(quantity(1.0).count() == 1); // should not compile - static_assert(quantity(1.0).count() == 1.0); - static_assert(quantity(my_value(1.0)).count() == 1.0); - static_assert(quantity(1).count() == 1.0); - static_assert(quantity(my_value(1)).count() == 1.0); - static_assert(quantity(3.14).count() == 3.14); - static_assert(quantity>(1.0).count() == 1.0); - static_assert(quantity>(1).count() == 1.0); - static_assert(quantity>(3.14).count() == 3.14); + static_assert(quantity(1).count() == 1); + static_assert(quantity(my_value(1)).count() == 1); + static_assert(quantity>(1).count() == 1); + // static_assert(quantity(1.0).count() == 1); // should not compile + // static_assert(quantity(my_value(1.0)).count() == 1); // should not compile + // static_assert(quantity(1.0).count() == 1); // should not compile + static_assert(quantity(1.0).count() == 1.0); + static_assert(quantity(my_value(1.0)).count() == 1.0); + static_assert(quantity(1).count() == 1.0); + static_assert(quantity(my_value(1)).count() == 1.0); + static_assert(quantity(3.14).count() == 3.14); + static_assert(quantity>(1.0).count() == 1.0); + static_assert(quantity>(1).count() == 1.0); + static_assert(quantity>(3.14).count() == 3.14); - static_assert(quantity(km).count() == 1000); - // static_assert(quantity(quantity(3.14)).count() == 3); // should not compile - static_assert(quantity(quantity_cast>>(3.14m)).count() == 3); - // static_assert(quantity(quantity>(1000.0)).count() == 1000); // should not compile - // static_assert(quantity(1000.0m).count() == 1000); // should not compile - static_assert(quantity(1000.0m).count() == 1000.0); - static_assert(quantity(quantity>(1000.0)).count() == 1000.0); - static_assert(quantity>(1000.0m).count() == 1000.0); - static_assert(quantity(km).count() == 1000.0); - static_assert(quantity>(km).count() == 1000.0); - static_assert(quantity(1km).count() == 1000); - // static_assert(quantity(1_s).count() == 1); // should not compile - // static_assert(quantity(1010m).count() == 1); // should not compile - static_assert(quantity(quantity_cast>>(1010m)).count() == 1); + static_assert(quantity(km).count() == 1000); + // static_assert(quantity(quantity(3.14)).count() == 3); // should not compile + static_assert(quantity(quantity_cast>>(3.14m)).count() == 3); + // static_assert(quantity(quantity>(1000.0)).count() == 1000); // should not compile + // static_assert(quantity(1000.0m).count() == 1000); // should not compile + static_assert(quantity(1000.0m).count() == 1000.0); + static_assert(quantity(quantity>(1000.0)).count() == 1000.0); + static_assert(quantity>(1000.0m).count() == 1000.0); + static_assert(quantity(km).count() == 1000.0); + static_assert(quantity>(km).count() == 1000.0); + static_assert(quantity(1km).count() == 1000); + // static_assert(quantity(1_s).count() == 1); // should not compile + // static_assert(quantity(1010m).count() == 1); // should not compile + static_assert(quantity(quantity_cast>>(1010m)).count() == 1); // assignment operator static_assert([]() { - quantity l1(1), l2(2); + quantity l1(1), l2(2); return l2 = l1; }() .count() == 1); // static member functions - static_assert(quantity::zero().count() == 0); - static_assert(quantity::min().count() == std::numeric_limits::lowest()); - static_assert(quantity::max().count() == std::numeric_limits::max()); - static_assert(quantity::zero().count() == 0.0); - static_assert(quantity::min().count() == std::numeric_limits::lowest()); - static_assert(quantity::max().count() == std::numeric_limits::max()); - static_assert(quantity>::zero().count() == 0); - static_assert(quantity>::min().count() == std::numeric_limits::lowest()); - static_assert(quantity>::max().count() == std::numeric_limits::max()); - static_assert(quantity>::zero().count() == 0.0); - static_assert(quantity>::min().count() == std::numeric_limits::lowest()); - static_assert(quantity>::max().count() == std::numeric_limits::max()); + static_assert(quantity::zero().count() == 0); + static_assert(quantity::min().count() == std::numeric_limits::lowest()); + static_assert(quantity::max().count() == std::numeric_limits::max()); + static_assert(quantity::zero().count() == 0.0); + static_assert(quantity::min().count() == std::numeric_limits::lowest()); + static_assert(quantity::max().count() == std::numeric_limits::max()); + static_assert(quantity>::zero().count() == 0); + static_assert(quantity>::min().count() == std::numeric_limits::lowest()); + static_assert(quantity>::max().count() == std::numeric_limits::max()); + static_assert(quantity>::zero().count() == 0.0); + static_assert(quantity>::min().count() == std::numeric_limits::lowest()); + static_assert(quantity>::max().count() == std::numeric_limits::max()); // unary member operators @@ -160,19 +160,19 @@ namespace { static_assert([](auto v) { auto vv = v++; return std::make_pair(v, vv); - }(km) == std::make_pair(quantity(1001), quantity(1000))); + }(km) == std::make_pair(quantity(1001), quantity(1000))); static_assert([](auto v) { auto vv = ++v; return std::make_pair(v, vv); - }(km) == std::make_pair(quantity(1001), quantity(1001))); + }(km) == std::make_pair(quantity(1001), quantity(1001))); static_assert([](auto v) { auto vv = v--; return std::make_pair(v, vv); - }(km) == std::make_pair(quantity(999), quantity(1000))); + }(km) == std::make_pair(quantity(999), quantity(1000))); static_assert([](auto v) { auto vv = --v; return std::make_pair(v, vv); - }(km) == std::make_pair(quantity(999), quantity(999))); + }(km) == std::make_pair(quantity(999), quantity(999))); // compound assignment @@ -185,21 +185,21 @@ namespace { // non-member arithmetic operators - static_assert(std::is_same_v() + quantity()), quantity>); - static_assert(std::is_same_v() + quantity()), quantity>); - static_assert(std::is_same_v() + quantity()), quantity>); - static_assert(std::is_same_v() - quantity()), quantity>); - static_assert(std::is_same_v() - quantity()), quantity>); - static_assert(std::is_same_v() * 1.0), quantity>); - static_assert(std::is_same_v()), quantity>); - static_assert(std::is_same_v() * quantity()), quantity>); + static_assert(std::is_same_v() + quantity()), quantity>); + static_assert(std::is_same_v() + quantity()), quantity>); + static_assert(std::is_same_v() + quantity()), quantity>); + static_assert(std::is_same_v() - quantity()), quantity>); + static_assert(std::is_same_v() - quantity()), quantity>); + static_assert(std::is_same_v() * 1.0), quantity>); + static_assert(std::is_same_v()), quantity>); + static_assert(std::is_same_v() * quantity()), quantity>); static_assert(std::is_same_v()), quantity>); - static_assert(std::is_same_v() / 1.0), quantity>); - static_assert(std::is_same_v() / quantity()), double>); - static_assert(std::is_same_v() / quantity()), double>); - static_assert(std::is_same_v() / quantity()), quantity>); - static_assert(std::is_same_v() % short(1)), quantity>); - static_assert(std::is_same_v() % quantity(1)), quantity>); + static_assert(std::is_same_v() / 1.0), quantity>); + static_assert(std::is_same_v() / quantity()), double>); + static_assert(std::is_same_v() / quantity()), double>); + static_assert(std::is_same_v() / quantity()), quantity>); + static_assert(std::is_same_v() % short(1)), quantity>); + static_assert(std::is_same_v() % quantity(1)), quantity>); static_assert((1m + km).count() == 1001); static_assert((1m + 1km).count() == 1001); @@ -247,19 +247,19 @@ namespace { // is_quantity - static_assert(Quantity>); + static_assert(Quantity>); // common_quantity - static_assert(std::is_same_v, quantity>, quantity>); - static_assert(std::is_same_v, quantity>, quantity>); - static_assert(std::is_same_v, quantity>, quantity>); + static_assert(std::is_same_v, quantity>, quantity>); + static_assert(std::is_same_v, quantity>, quantity>); + static_assert(std::is_same_v, quantity>, quantity>); // quantity_cast // static_assert(quantity_cast(2km).count() == 2000); // should not compile - static_assert(quantity_cast>(2km).count() == 2000); - static_assert(quantity_cast>(2000m).count() == 2); + static_assert(quantity_cast>(2km).count() == 2000); + static_assert(quantity_cast>(2000m).count() == 2); // time diff --git a/test/unit_test/test_units.cpp b/test/unit_test/test_units.cpp index 459790b4..dbe57911 100644 --- a/test/unit_test/test_units.cpp +++ b/test/unit_test/test_units.cpp @@ -135,7 +135,7 @@ namespace { static_assert(2km / 2kmph == 1h); // static_assert(2000m / 2kmph == 1h); // should not compile - static_assert(quantity_cast>(2000m) / 2kmph == 1h); + static_assert(quantity_cast>(2000m) / 2kmph == 1h); // acceleration