diff --git a/wpimath/src/main/native/include/units/base.h b/wpimath/src/main/native/include/units/base.h index f2d45cf9b5..bc9fb446f7 100644 --- a/wpimath/src/main/native/include/units/base.h +++ b/wpimath/src/main/native/include/units/base.h @@ -366,6 +366,7 @@ template<> inline constexpr const char* abbreviation(const namespaceName::nameSi namespace traits\ {\ template struct is_ ## unitCategory ## _unit : std::integral_constant>::value...>::value> {};\ + template inline constexpr bool is_ ## unitCategory ## _unit_v = is_ ## unitCategory ## _unit::value;\ } #else #define UNIT_ADD_IS_UNIT_CATEGORY_TRAIT(unitCategory)\ @@ -375,6 +376,8 @@ template<> inline constexpr const char* abbreviation(const namespaceName::nameSi struct is_ ## unitCategory ## _unit : std::integral_constant::type>::value &&\ units::traits::detail::is_ ## unitCategory ## _unit_impl::type>::value &&\ units::traits::detail::is_ ## unitCategory ## _unit_impl::type>::value>{};\ + template\ + inline constexpr bool is_ ## unitCategory ## _unit_v = is_ ## unitCategory ## _unit::value;\ } #endif @@ -589,6 +592,8 @@ namespace units has_num::value && has_den::value> {}; + template + inline constexpr bool is_ratio_v = is_ratio::value; } //------------------------------ @@ -613,6 +618,8 @@ namespace units */ template struct all_true : std::is_same, units::bool_pack> {}; + template + inline constexpr bool all_true_t_v = all_true::type::value; /** @endcond */ // DOXYGEN IGNORE /** @@ -713,6 +720,8 @@ namespace units */ template struct is_unit : std::is_base_of::type {}; + template + inline constexpr bool is_unit_v = is_unit::value; } /** @} */ // end of TypeTraits @@ -1521,6 +1530,8 @@ namespace units template struct is_convertible_unit : std::is_same ::base_unit_type>, base_unit_of::base_unit_type >> {}; + template + inline constexpr bool is_convertible_unit_v = is_convertible_unit::value; } //------------------------------ @@ -1714,6 +1725,8 @@ namespace units */ template struct has_value_member : traits::detail::has_value_member_impl::type {}; + template + inline constexpr bool has_value_member_v = has_value_member::value; } /** @endcond */ // END DOXYGEN IGNORE @@ -1852,6 +1865,8 @@ namespace units */ template struct is_unit_t : std::is_base_of::type {}; + template + inline constexpr bool is_unit_t_v = is_unit_t::value; } /** @@ -2401,12 +2416,16 @@ namespace units #if !defined(_MSC_VER) || _MSC_VER > 1800 // bug in VS2013 prevents this from working template struct has_linear_scale : std::integral_constant::underlying_type>, T>::value...>::value > {}; + template + inline constexpr bool has_linear_scale_v = has_linear_scale::value; #else template struct has_linear_scale : std::integral_constant::underlying_type>, T1>::value && std::is_base_of::underlying_type>, T2>::value && std::is_base_of::underlying_type>, T3>::value> {}; + template + inline constexpr bool has_linear_scale_v = has_linear_scale::value; #endif /** @@ -2419,12 +2438,16 @@ namespace units #if !defined(_MSC_VER) || _MSC_VER > 1800 // bug in VS2013 prevents this from working template struct has_decibel_scale : std::integral_constant::underlying_type>, T>::value...>::value> {}; + template + inline constexpr bool has_decibel_scale_v = has_decibel_scale::value; #else template struct has_decibel_scale : std::integral_constant::underlying_type>, T1>::value && std::is_base_of::underlying_type>, T2>::value && std::is_base_of::underlying_type>, T3>::value> {}; + template + inline constexpr bool has_decibel_scale_v = has_decibel_scale::value; #endif /** @@ -2439,6 +2462,8 @@ namespace units struct is_same_scale : std::integral_constant::non_linear_scale_type, typename units::traits::unit_t_traits::non_linear_scale_type>::value> {}; + template + inline constexpr bool is_same_scale_v = is_same_scale::value; } //---------------------------------- @@ -3033,6 +3058,8 @@ namespace dimensionless { struct is_unit_value_t : std::integral_constant, T>::value> {}; + template::unit_type> + inline constexpr bool is_unit_value_t_v = is_unit_value_t::value; /** * @ingroup TypeTraits @@ -3045,6 +3072,8 @@ namespace dimensionless { { static_assert(is_base_unit::value, "Template parameter `Category` must be a `base_unit` type."); }; + template + inline constexpr bool is_unit_value_t_category_v = is_unit_value_t_category::value; } /** @cond */ // DOXYGEN IGNORE diff --git a/wpimath/src/test/native/cpp/UnitsTest.cpp b/wpimath/src/test/native/cpp/UnitsTest.cpp index ec38a471e3..d5ba717e87 100644 --- a/wpimath/src/test/native/cpp/UnitsTest.cpp +++ b/wpimath/src/test/native/cpp/UnitsTest.cpp @@ -164,8 +164,8 @@ class CaseStudies : public ::testing::Test { } // namespace TEST_F(TypeTraits, isRatio) { - EXPECT_TRUE(traits::is_ratio>::value); - EXPECT_FALSE(traits::is_ratio::value); + EXPECT_TRUE(traits::is_ratio_v>); + EXPECT_FALSE(traits::is_ratio_v); } TEST_F(TypeTraits, ratio_sqrt) { @@ -210,77 +210,77 @@ TEST_F(TypeTraits, ratio_sqrt) { 5e-9); } -TEST_F(TypeTraits, is_unit) { - EXPECT_FALSE(traits::is_unit>::value); - EXPECT_FALSE(traits::is_unit::value); - EXPECT_TRUE(traits::is_unit::value); - EXPECT_TRUE(traits::is_unit::value); - EXPECT_TRUE(traits::is_unit::value); - EXPECT_FALSE(traits::is_unit::value); +TEST_F(TypeTraits, is_unit_v) { + EXPECT_FALSE(traits::is_unit_v>); + EXPECT_FALSE(traits::is_unit_v); + EXPECT_TRUE(traits::is_unit_v); + EXPECT_TRUE(traits::is_unit_v); + EXPECT_TRUE(traits::is_unit_v); + EXPECT_FALSE(traits::is_unit_v); } TEST_F(TypeTraits, is_unit_t) { - EXPECT_FALSE(traits::is_unit_t>::value); - EXPECT_FALSE(traits::is_unit_t::value); - EXPECT_FALSE(traits::is_unit_t::value); - EXPECT_FALSE(traits::is_unit_t::value); - EXPECT_FALSE(traits::is_unit_t::value); - EXPECT_TRUE(traits::is_unit_t::value); + EXPECT_FALSE(traits::is_unit_t_v>); + EXPECT_FALSE(traits::is_unit_t_v); + EXPECT_FALSE(traits::is_unit_t_v); + EXPECT_FALSE(traits::is_unit_t_v); + EXPECT_FALSE(traits::is_unit_t_v); + EXPECT_TRUE(traits::is_unit_t_v); } TEST_F(TypeTraits, unit_traits) { EXPECT_TRUE( - (std::is_same::conversion_ratio>::value)); - EXPECT_FALSE( - (std::is_same::conversion_ratio>::value)); + (std::is_same_v::conversion_ratio>)); + EXPECT_TRUE( + !(std::is_same_v::conversion_ratio>)); } TEST_F(TypeTraits, unit_t_traits) { EXPECT_TRUE( - (std::is_same::underlying_type>::value)); + (std::is_same_v::underlying_type>)); EXPECT_TRUE( - (std::is_same::underlying_type>::value)); + (std::is_same_v::underlying_type>)); EXPECT_TRUE( - (std::is_same::value_type>::value)); + (std::is_same_v::value_type>)); EXPECT_TRUE( - (std::is_same::value_type>::value)); + (std::is_same_v::value_type>)); } TEST_F(TypeTraits, all_true) { - EXPECT_TRUE(all_true::type::value); - EXPECT_TRUE((all_true::type::value)); - EXPECT_TRUE((all_true::type::value)); - EXPECT_FALSE(all_true::type::value); - EXPECT_FALSE((all_true::type::value)); - EXPECT_FALSE((all_true::type::value)); - EXPECT_FALSE((all_true::type::value)); + EXPECT_TRUE(all_true_t_v); + EXPECT_TRUE((all_true_t_v)); + EXPECT_TRUE((all_true_t_v)); + EXPECT_FALSE(all_true_t_v); + EXPECT_FALSE((all_true_t_v)); + EXPECT_FALSE((all_true_t_v)); + EXPECT_FALSE((all_true_t_v)); } TEST_F(TypeTraits, is_convertible_unit) { - EXPECT_TRUE((traits::is_convertible_unit::value)); - EXPECT_TRUE((traits::is_convertible_unit::value)); - EXPECT_TRUE((traits::is_convertible_unit::value)); + EXPECT_TRUE((traits::is_convertible_unit_v)); + EXPECT_TRUE((traits::is_convertible_unit_v)); + EXPECT_TRUE((traits::is_convertible_unit_v)); - EXPECT_TRUE((traits::is_convertible_unit::value)); - EXPECT_TRUE((traits::is_convertible_unit::value)); - EXPECT_TRUE((traits::is_convertible_unit::value)); - EXPECT_TRUE((traits::is_convertible_unit::value)); + EXPECT_TRUE((traits::is_convertible_unit_v)); + EXPECT_TRUE((traits::is_convertible_unit_v)); + EXPECT_TRUE((traits::is_convertible_unit_v)); + EXPECT_TRUE((traits::is_convertible_unit_v)); - EXPECT_FALSE((traits::is_convertible_unit::value)); - EXPECT_FALSE((traits::is_convertible_unit::value)); - EXPECT_FALSE((traits::is_convertible_unit::value)); + EXPECT_FALSE((traits::is_convertible_unit_v)); + EXPECT_FALSE((traits::is_convertible_unit_v)); + EXPECT_FALSE((traits::is_convertible_unit_v)); } TEST_F(TypeTraits, inverse) { double test; using htz = inverse; - bool shouldBeTrue = std::is_same::value; + bool shouldBeTrue = std::is_same_v; EXPECT_TRUE(shouldBeTrue); test = convert, inverse>(1.0); @@ -292,564 +292,564 @@ TEST_F(TypeTraits, inverse) { TEST_F(TypeTraits, base_unit_of) { using base = traits::base_unit_of; - bool shouldBeTrue = std::is_same::value; + bool shouldBeTrue = std::is_same_v; EXPECT_TRUE(shouldBeTrue); } TEST_F(TypeTraits, has_linear_scale) { - EXPECT_TRUE((traits::has_linear_scale::value)); - EXPECT_TRUE((traits::has_linear_scale::value)); - EXPECT_TRUE((traits::has_linear_scale::value)); - EXPECT_TRUE((traits::has_linear_scale::value)); - EXPECT_TRUE((traits::has_linear_scale::value)); - EXPECT_TRUE((traits::has_linear_scale::value)); - EXPECT_FALSE((traits::has_linear_scale::value)); - EXPECT_FALSE((traits::has_linear_scale::value)); + EXPECT_TRUE((traits::has_linear_scale_v)); + EXPECT_TRUE((traits::has_linear_scale_v)); + EXPECT_TRUE((traits::has_linear_scale_v)); + EXPECT_TRUE((traits::has_linear_scale_v)); + EXPECT_TRUE((traits::has_linear_scale_v)); + EXPECT_TRUE((traits::has_linear_scale_v)); + EXPECT_FALSE((traits::has_linear_scale_v)); + EXPECT_FALSE((traits::has_linear_scale_v)); } TEST_F(TypeTraits, has_decibel_scale) { - EXPECT_FALSE((traits::has_decibel_scale::value)); - EXPECT_FALSE((traits::has_decibel_scale::value)); - EXPECT_FALSE((traits::has_decibel_scale::value)); - EXPECT_TRUE((traits::has_decibel_scale::value)); - EXPECT_TRUE((traits::has_decibel_scale::value)); + EXPECT_FALSE((traits::has_decibel_scale_v)); + EXPECT_FALSE((traits::has_decibel_scale_v)); + EXPECT_FALSE((traits::has_decibel_scale_v)); + EXPECT_TRUE((traits::has_decibel_scale_v)); + EXPECT_TRUE((traits::has_decibel_scale_v)); - EXPECT_TRUE((traits::has_decibel_scale::value)); - EXPECT_TRUE((traits::has_decibel_scale::value)); - EXPECT_TRUE((traits::has_decibel_scale::value)); - EXPECT_TRUE((traits::has_decibel_scale::value)); - EXPECT_FALSE((traits::has_decibel_scale::value)); - EXPECT_FALSE((traits::has_decibel_scale::value)); + EXPECT_TRUE((traits::has_decibel_scale_v)); + EXPECT_TRUE((traits::has_decibel_scale_v)); + EXPECT_TRUE((traits::has_decibel_scale_v)); + EXPECT_TRUE((traits::has_decibel_scale_v)); + EXPECT_FALSE((traits::has_decibel_scale_v)); + EXPECT_FALSE((traits::has_decibel_scale_v)); } TEST_F(TypeTraits, is_same_scale) { - EXPECT_TRUE((traits::is_same_scale::value)); - EXPECT_TRUE((traits::is_same_scale::value)); - EXPECT_FALSE((traits::is_same_scale::value)); + EXPECT_TRUE((traits::is_same_scale_v)); + EXPECT_TRUE((traits::is_same_scale_v)); + EXPECT_FALSE((traits::is_same_scale_v)); } TEST_F(TypeTraits, is_dimensionless_unit) { - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_TRUE((traits::is_dimensionless_unit::value)); - EXPECT_FALSE((traits::is_dimensionless_unit::value)); - EXPECT_FALSE((traits::is_dimensionless_unit::value)); - EXPECT_FALSE((traits::is_dimensionless_unit::value)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_TRUE((traits::is_dimensionless_unit_v)); + EXPECT_FALSE((traits::is_dimensionless_unit_v)); + EXPECT_FALSE((traits::is_dimensionless_unit_v)); + EXPECT_FALSE((traits::is_dimensionless_unit_v)); } TEST_F(TypeTraits, is_length_unit) { - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_FALSE((traits::is_length_unit::value)); - EXPECT_FALSE((traits::is_length_unit::value)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_FALSE((traits::is_length_unit_v)); + EXPECT_FALSE((traits::is_length_unit_v)); - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_FALSE((traits::is_length_unit::value)); - EXPECT_TRUE((traits::is_length_unit::value)); - EXPECT_FALSE((traits::is_length_unit::value)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_FALSE((traits::is_length_unit_v)); + EXPECT_TRUE((traits::is_length_unit_v)); + EXPECT_FALSE((traits::is_length_unit_v)); } TEST_F(TypeTraits, is_mass_unit) { - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_FALSE((traits::is_mass_unit::value)); - EXPECT_FALSE((traits::is_mass_unit::value)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_FALSE((traits::is_mass_unit_v)); + EXPECT_FALSE((traits::is_mass_unit_v)); - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_FALSE((traits::is_mass_unit::value)); - EXPECT_TRUE((traits::is_mass_unit::value)); - EXPECT_FALSE((traits::is_mass_unit::value)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_FALSE((traits::is_mass_unit_v)); + EXPECT_TRUE((traits::is_mass_unit_v)); + EXPECT_FALSE((traits::is_mass_unit_v)); } TEST_F(TypeTraits, is_time_unit) { - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_FALSE((traits::is_time_unit::value)); - EXPECT_FALSE((traits::is_time_unit::value)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_FALSE((traits::is_time_unit_v)); + EXPECT_FALSE((traits::is_time_unit_v)); - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_FALSE((traits::is_time_unit::value)); - EXPECT_TRUE((traits::is_time_unit::value)); - EXPECT_FALSE((traits::is_time_unit::value)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_FALSE((traits::is_time_unit_v)); + EXPECT_TRUE((traits::is_time_unit_v)); + EXPECT_FALSE((traits::is_time_unit_v)); } TEST_F(TypeTraits, is_angle_unit) { - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_FALSE((traits::is_angle_unit::value)); - EXPECT_FALSE((traits::is_angle_unit::value)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_FALSE((traits::is_angle_unit_v)); + EXPECT_FALSE((traits::is_angle_unit_v)); - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_FALSE((traits::is_angle_unit::value)); - EXPECT_TRUE((traits::is_angle_unit::value)); - EXPECT_FALSE((traits::is_angle_unit::value)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_FALSE((traits::is_angle_unit_v)); + EXPECT_TRUE((traits::is_angle_unit_v)); + EXPECT_FALSE((traits::is_angle_unit_v)); } TEST_F(TypeTraits, is_current_unit) { - EXPECT_TRUE((traits::is_current_unit::value)); - EXPECT_FALSE((traits::is_current_unit::value)); - EXPECT_FALSE((traits::is_current_unit::value)); + EXPECT_TRUE((traits::is_current_unit_v)); + EXPECT_FALSE((traits::is_current_unit_v)); + EXPECT_FALSE((traits::is_current_unit_v)); - EXPECT_TRUE((traits::is_current_unit::value)); - EXPECT_TRUE((traits::is_current_unit::value)); - EXPECT_TRUE((traits::is_current_unit::value)); - EXPECT_FALSE((traits::is_current_unit::value)); - EXPECT_TRUE((traits::is_current_unit::value)); - EXPECT_FALSE((traits::is_current_unit::value)); + EXPECT_TRUE((traits::is_current_unit_v)); + EXPECT_TRUE((traits::is_current_unit_v)); + EXPECT_TRUE((traits::is_current_unit_v)); + EXPECT_FALSE((traits::is_current_unit_v)); + EXPECT_TRUE((traits::is_current_unit_v)); + EXPECT_FALSE((traits::is_current_unit_v)); } TEST_F(TypeTraits, is_temperature_unit) { - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_FALSE((traits::is_temperature_unit::value)); - EXPECT_FALSE((traits::is_temperature_unit::value)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_FALSE((traits::is_temperature_unit_v)); + EXPECT_FALSE((traits::is_temperature_unit_v)); - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_FALSE((traits::is_temperature_unit::value)); - EXPECT_TRUE((traits::is_temperature_unit::value)); - EXPECT_FALSE((traits::is_temperature_unit::value)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_FALSE((traits::is_temperature_unit_v)); + EXPECT_TRUE((traits::is_temperature_unit_v)); + EXPECT_FALSE((traits::is_temperature_unit_v)); } TEST_F(TypeTraits, is_substance_unit) { - EXPECT_TRUE((traits::is_substance_unit::value)); - EXPECT_FALSE((traits::is_substance_unit::value)); - EXPECT_FALSE((traits::is_substance_unit::value)); + EXPECT_TRUE((traits::is_substance_unit_v)); + EXPECT_FALSE((traits::is_substance_unit_v)); + EXPECT_FALSE((traits::is_substance_unit_v)); - EXPECT_TRUE((traits::is_substance_unit::value)); - EXPECT_TRUE((traits::is_substance_unit::value)); - EXPECT_TRUE((traits::is_substance_unit::value)); - EXPECT_FALSE((traits::is_substance_unit::value)); + EXPECT_TRUE((traits::is_substance_unit_v)); + EXPECT_TRUE((traits::is_substance_unit_v)); + EXPECT_TRUE((traits::is_substance_unit_v)); + EXPECT_FALSE((traits::is_substance_unit_v)); EXPECT_TRUE( - (traits::is_substance_unit::value)); - EXPECT_FALSE((traits::is_substance_unit::value)); + (traits::is_substance_unit_v)); + EXPECT_FALSE((traits::is_substance_unit_v)); } TEST_F(TypeTraits, is_luminous_intensity_unit) { - EXPECT_TRUE((traits::is_luminous_intensity_unit::value)); + EXPECT_TRUE((traits::is_luminous_intensity_unit_v)); EXPECT_FALSE( - (traits::is_luminous_intensity_unit::value)); - EXPECT_FALSE((traits::is_luminous_intensity_unit::value)); + (traits::is_luminous_intensity_unit_v)); + EXPECT_FALSE((traits::is_luminous_intensity_unit_v)); - EXPECT_TRUE((traits::is_luminous_intensity_unit::value)); - EXPECT_TRUE((traits::is_luminous_intensity_unit::value)); - EXPECT_TRUE((traits::is_luminous_intensity_unit::value)); - EXPECT_FALSE((traits::is_luminous_intensity_unit::value)); + EXPECT_TRUE((traits::is_luminous_intensity_unit_v)); + EXPECT_TRUE((traits::is_luminous_intensity_unit_v)); + EXPECT_TRUE((traits::is_luminous_intensity_unit_v)); + EXPECT_FALSE((traits::is_luminous_intensity_unit_v)); EXPECT_TRUE( - (traits::is_luminous_intensity_unit::value)); - EXPECT_FALSE((traits::is_luminous_intensity_unit::value)); + (traits::is_luminous_intensity_unit_v)); + EXPECT_FALSE((traits::is_luminous_intensity_unit_v)); } TEST_F(TypeTraits, is_solid_angle_unit) { - EXPECT_TRUE((traits::is_solid_angle_unit::value)); - EXPECT_TRUE((traits::is_solid_angle_unit::value)); - EXPECT_FALSE((traits::is_solid_angle_unit::value)); - EXPECT_FALSE((traits::is_solid_angle_unit::value)); + EXPECT_TRUE((traits::is_solid_angle_unit_v)); + EXPECT_TRUE((traits::is_solid_angle_unit_v)); + EXPECT_FALSE((traits::is_solid_angle_unit_v)); + EXPECT_FALSE((traits::is_solid_angle_unit_v)); - EXPECT_TRUE((traits::is_solid_angle_unit::value)); - EXPECT_TRUE((traits::is_solid_angle_unit::value)); - EXPECT_TRUE((traits::is_solid_angle_unit::value)); - EXPECT_FALSE((traits::is_solid_angle_unit::value)); + EXPECT_TRUE((traits::is_solid_angle_unit_v)); + EXPECT_TRUE((traits::is_solid_angle_unit_v)); + EXPECT_TRUE((traits::is_solid_angle_unit_v)); + EXPECT_FALSE((traits::is_solid_angle_unit_v)); EXPECT_TRUE( - (traits::is_solid_angle_unit::value)); + (traits::is_solid_angle_unit_v)); EXPECT_FALSE( - (traits::is_solid_angle_unit::value)); + (traits::is_solid_angle_unit_v)); } TEST_F(TypeTraits, is_frequency_unit) { - EXPECT_TRUE((traits::is_frequency_unit::value)); - EXPECT_FALSE((traits::is_frequency_unit::value)); - EXPECT_FALSE((traits::is_frequency_unit::value)); + EXPECT_TRUE((traits::is_frequency_unit_v)); + EXPECT_FALSE((traits::is_frequency_unit_v)); + EXPECT_FALSE((traits::is_frequency_unit_v)); - EXPECT_TRUE((traits::is_frequency_unit::value)); - EXPECT_TRUE((traits::is_frequency_unit::value)); - EXPECT_TRUE((traits::is_frequency_unit::value)); - EXPECT_FALSE((traits::is_frequency_unit::value)); - EXPECT_TRUE((traits::is_frequency_unit::value)); - EXPECT_FALSE((traits::is_frequency_unit::value)); + EXPECT_TRUE((traits::is_frequency_unit_v)); + EXPECT_TRUE((traits::is_frequency_unit_v)); + EXPECT_TRUE((traits::is_frequency_unit_v)); + EXPECT_FALSE((traits::is_frequency_unit_v)); + EXPECT_TRUE((traits::is_frequency_unit_v)); + EXPECT_FALSE((traits::is_frequency_unit_v)); } TEST_F(TypeTraits, is_velocity_unit) { - EXPECT_TRUE((traits::is_velocity_unit::value)); - EXPECT_TRUE((traits::is_velocity_unit::value)); - EXPECT_FALSE((traits::is_velocity_unit::value)); - EXPECT_FALSE((traits::is_velocity_unit::value)); + EXPECT_TRUE((traits::is_velocity_unit_v)); + EXPECT_TRUE((traits::is_velocity_unit_v)); + EXPECT_FALSE((traits::is_velocity_unit_v)); + EXPECT_FALSE((traits::is_velocity_unit_v)); - EXPECT_TRUE((traits::is_velocity_unit::value)); - EXPECT_TRUE((traits::is_velocity_unit::value)); - EXPECT_TRUE((traits::is_velocity_unit::value)); - EXPECT_TRUE((traits::is_velocity_unit::value)); - EXPECT_FALSE((traits::is_velocity_unit::value)); + EXPECT_TRUE((traits::is_velocity_unit_v)); + EXPECT_TRUE((traits::is_velocity_unit_v)); + EXPECT_TRUE((traits::is_velocity_unit_v)); + EXPECT_TRUE((traits::is_velocity_unit_v)); + EXPECT_FALSE((traits::is_velocity_unit_v)); EXPECT_TRUE( - (traits::is_velocity_unit::value)); - EXPECT_FALSE((traits::is_velocity_unit::value)); + (traits::is_velocity_unit_v)); + EXPECT_FALSE((traits::is_velocity_unit_v)); } TEST_F(TypeTraits, is_acceleration_unit) { - EXPECT_TRUE((traits::is_acceleration_unit::value)); + EXPECT_TRUE((traits::is_acceleration_unit_v)); EXPECT_TRUE( - (traits::is_acceleration_unit::value)); - EXPECT_FALSE((traits::is_acceleration_unit::value)); - EXPECT_FALSE((traits::is_acceleration_unit::value)); + (traits::is_acceleration_unit_v)); + EXPECT_FALSE((traits::is_acceleration_unit_v)); + EXPECT_FALSE((traits::is_acceleration_unit_v)); EXPECT_TRUE( - (traits::is_acceleration_unit::value)); + (traits::is_acceleration_unit_v)); EXPECT_TRUE( - (traits::is_acceleration_unit::value)); + (traits::is_acceleration_unit_v)); EXPECT_TRUE(( - traits::is_acceleration_unit::value)); - EXPECT_TRUE((traits::is_acceleration_unit::value)); - EXPECT_FALSE((traits::is_acceleration_unit::value)); + traits::is_acceleration_unit_v)); + EXPECT_TRUE((traits::is_acceleration_unit_v)); + EXPECT_FALSE((traits::is_acceleration_unit_v)); EXPECT_TRUE( - (traits::is_acceleration_unit::value)); + (traits::is_acceleration_unit_v)); EXPECT_FALSE( - (traits::is_acceleration_unit::value)); + (traits::is_acceleration_unit_v)); } TEST_F(TypeTraits, is_force_unit) { - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_FALSE((traits::is_force_unit::value)); - EXPECT_FALSE((traits::is_force_unit::value)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_FALSE((traits::is_force_unit_v)); + EXPECT_FALSE((traits::is_force_unit_v)); - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_FALSE((traits::is_force_unit::value)); - EXPECT_TRUE((traits::is_force_unit::value)); - EXPECT_FALSE((traits::is_force_unit::value)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_FALSE((traits::is_force_unit_v)); + EXPECT_TRUE((traits::is_force_unit_v)); + EXPECT_FALSE((traits::is_force_unit_v)); } TEST_F(TypeTraits, is_pressure_unit) { - EXPECT_TRUE((traits::is_pressure_unit::value)); - EXPECT_TRUE((traits::is_pressure_unit::value)); - EXPECT_FALSE((traits::is_pressure_unit::value)); - EXPECT_FALSE((traits::is_pressure_unit::value)); + EXPECT_TRUE((traits::is_pressure_unit_v)); + EXPECT_TRUE((traits::is_pressure_unit_v)); + EXPECT_FALSE((traits::is_pressure_unit_v)); + EXPECT_FALSE((traits::is_pressure_unit_v)); - EXPECT_TRUE((traits::is_pressure_unit::value)); - EXPECT_TRUE((traits::is_pressure_unit::value)); - EXPECT_TRUE((traits::is_pressure_unit::value)); - EXPECT_TRUE((traits::is_pressure_unit::value)); - EXPECT_FALSE((traits::is_pressure_unit::value)); + EXPECT_TRUE((traits::is_pressure_unit_v)); + EXPECT_TRUE((traits::is_pressure_unit_v)); + EXPECT_TRUE((traits::is_pressure_unit_v)); + EXPECT_TRUE((traits::is_pressure_unit_v)); + EXPECT_FALSE((traits::is_pressure_unit_v)); EXPECT_TRUE( - (traits::is_pressure_unit::value)); - EXPECT_FALSE((traits::is_pressure_unit::value)); + (traits::is_pressure_unit_v)); + EXPECT_FALSE((traits::is_pressure_unit_v)); } TEST_F(TypeTraits, is_charge_unit) { - EXPECT_TRUE((traits::is_charge_unit::value)); - EXPECT_FALSE((traits::is_charge_unit::value)); - EXPECT_FALSE((traits::is_charge_unit::value)); + EXPECT_TRUE((traits::is_charge_unit_v)); + EXPECT_FALSE((traits::is_charge_unit_v)); + EXPECT_FALSE((traits::is_charge_unit_v)); - EXPECT_TRUE((traits::is_charge_unit::value)); - EXPECT_TRUE((traits::is_charge_unit::value)); - EXPECT_TRUE((traits::is_charge_unit::value)); - EXPECT_FALSE((traits::is_charge_unit::value)); - EXPECT_TRUE((traits::is_charge_unit::value)); - EXPECT_FALSE((traits::is_charge_unit::value)); + EXPECT_TRUE((traits::is_charge_unit_v)); + EXPECT_TRUE((traits::is_charge_unit_v)); + EXPECT_TRUE((traits::is_charge_unit_v)); + EXPECT_FALSE((traits::is_charge_unit_v)); + EXPECT_TRUE((traits::is_charge_unit_v)); + EXPECT_FALSE((traits::is_charge_unit_v)); } TEST_F(TypeTraits, is_energy_unit) { - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_FALSE((traits::is_energy_unit::value)); - EXPECT_FALSE((traits::is_energy_unit::value)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_FALSE((traits::is_energy_unit_v)); + EXPECT_FALSE((traits::is_energy_unit_v)); - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_FALSE((traits::is_energy_unit::value)); - EXPECT_TRUE((traits::is_energy_unit::value)); - EXPECT_FALSE((traits::is_energy_unit::value)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_FALSE((traits::is_energy_unit_v)); + EXPECT_TRUE((traits::is_energy_unit_v)); + EXPECT_FALSE((traits::is_energy_unit_v)); } TEST_F(TypeTraits, is_power_unit) { - EXPECT_TRUE((traits::is_power_unit::value)); - EXPECT_FALSE((traits::is_power_unit::value)); - EXPECT_FALSE((traits::is_power_unit::value)); + EXPECT_TRUE((traits::is_power_unit_v)); + EXPECT_FALSE((traits::is_power_unit_v)); + EXPECT_FALSE((traits::is_power_unit_v)); - EXPECT_TRUE((traits::is_power_unit::value)); - EXPECT_TRUE((traits::is_power_unit::value)); - EXPECT_TRUE((traits::is_power_unit::value)); - EXPECT_FALSE((traits::is_power_unit::value)); - EXPECT_TRUE((traits::is_power_unit::value)); - EXPECT_FALSE((traits::is_power_unit::value)); + EXPECT_TRUE((traits::is_power_unit_v)); + EXPECT_TRUE((traits::is_power_unit_v)); + EXPECT_TRUE((traits::is_power_unit_v)); + EXPECT_FALSE((traits::is_power_unit_v)); + EXPECT_TRUE((traits::is_power_unit_v)); + EXPECT_FALSE((traits::is_power_unit_v)); } TEST_F(TypeTraits, is_voltage_unit) { - EXPECT_TRUE((traits::is_voltage_unit::value)); - EXPECT_FALSE((traits::is_voltage_unit::value)); - EXPECT_FALSE((traits::is_voltage_unit::value)); + EXPECT_TRUE((traits::is_voltage_unit_v)); + EXPECT_FALSE((traits::is_voltage_unit_v)); + EXPECT_FALSE((traits::is_voltage_unit_v)); - EXPECT_TRUE((traits::is_voltage_unit::value)); - EXPECT_TRUE((traits::is_voltage_unit::value)); - EXPECT_TRUE((traits::is_voltage_unit::value)); - EXPECT_FALSE((traits::is_voltage_unit::value)); - EXPECT_TRUE((traits::is_voltage_unit::value)); - EXPECT_FALSE((traits::is_voltage_unit::value)); + EXPECT_TRUE((traits::is_voltage_unit_v)); + EXPECT_TRUE((traits::is_voltage_unit_v)); + EXPECT_TRUE((traits::is_voltage_unit_v)); + EXPECT_FALSE((traits::is_voltage_unit_v)); + EXPECT_TRUE((traits::is_voltage_unit_v)); + EXPECT_FALSE((traits::is_voltage_unit_v)); } TEST_F(TypeTraits, is_capacitance_unit) { - EXPECT_TRUE((traits::is_capacitance_unit::value)); - EXPECT_FALSE((traits::is_capacitance_unit::value)); - EXPECT_FALSE((traits::is_capacitance_unit::value)); + EXPECT_TRUE((traits::is_capacitance_unit_v)); + EXPECT_FALSE((traits::is_capacitance_unit_v)); + EXPECT_FALSE((traits::is_capacitance_unit_v)); - EXPECT_TRUE((traits::is_capacitance_unit::value)); - EXPECT_TRUE((traits::is_capacitance_unit::value)); - EXPECT_TRUE((traits::is_capacitance_unit::value)); - EXPECT_FALSE((traits::is_capacitance_unit::value)); + EXPECT_TRUE((traits::is_capacitance_unit_v)); + EXPECT_TRUE((traits::is_capacitance_unit_v)); + EXPECT_TRUE((traits::is_capacitance_unit_v)); + EXPECT_FALSE((traits::is_capacitance_unit_v)); EXPECT_TRUE( - (traits::is_capacitance_unit::value)); - EXPECT_FALSE((traits::is_capacitance_unit::value)); + (traits::is_capacitance_unit_v)); + EXPECT_FALSE((traits::is_capacitance_unit_v)); } TEST_F(TypeTraits, is_impedance_unit) { - EXPECT_TRUE((traits::is_impedance_unit::value)); - EXPECT_FALSE((traits::is_impedance_unit::value)); - EXPECT_FALSE((traits::is_impedance_unit::value)); + EXPECT_TRUE((traits::is_impedance_unit_v)); + EXPECT_FALSE((traits::is_impedance_unit_v)); + EXPECT_FALSE((traits::is_impedance_unit_v)); - EXPECT_TRUE((traits::is_impedance_unit::value)); - EXPECT_TRUE((traits::is_impedance_unit::value)); - EXPECT_TRUE((traits::is_impedance_unit::value)); - EXPECT_FALSE((traits::is_impedance_unit::value)); - EXPECT_TRUE((traits::is_impedance_unit::value)); - EXPECT_FALSE((traits::is_impedance_unit::value)); + EXPECT_TRUE((traits::is_impedance_unit_v)); + EXPECT_TRUE((traits::is_impedance_unit_v)); + EXPECT_TRUE((traits::is_impedance_unit_v)); + EXPECT_FALSE((traits::is_impedance_unit_v)); + EXPECT_TRUE((traits::is_impedance_unit_v)); + EXPECT_FALSE((traits::is_impedance_unit_v)); } TEST_F(TypeTraits, is_conductance_unit) { - EXPECT_TRUE((traits::is_conductance_unit::value)); - EXPECT_FALSE((traits::is_conductance_unit::value)); - EXPECT_FALSE((traits::is_conductance_unit::value)); + EXPECT_TRUE((traits::is_conductance_unit_v)); + EXPECT_FALSE((traits::is_conductance_unit_v)); + EXPECT_FALSE((traits::is_conductance_unit_v)); - EXPECT_TRUE((traits::is_conductance_unit::value)); - EXPECT_TRUE((traits::is_conductance_unit::value)); - EXPECT_TRUE((traits::is_conductance_unit::value)); - EXPECT_FALSE((traits::is_conductance_unit::value)); + EXPECT_TRUE((traits::is_conductance_unit_v)); + EXPECT_TRUE((traits::is_conductance_unit_v)); + EXPECT_TRUE((traits::is_conductance_unit_v)); + EXPECT_FALSE((traits::is_conductance_unit_v)); EXPECT_TRUE( - (traits::is_conductance_unit::value)); - EXPECT_FALSE((traits::is_conductance_unit::value)); + (traits::is_conductance_unit_v)); + EXPECT_FALSE((traits::is_conductance_unit_v)); } TEST_F(TypeTraits, is_magnetic_flux_unit) { - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_FALSE((traits::is_magnetic_flux_unit::value)); - EXPECT_FALSE((traits::is_magnetic_flux_unit::value)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_FALSE((traits::is_magnetic_flux_unit_v)); + EXPECT_FALSE((traits::is_magnetic_flux_unit_v)); - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_FALSE((traits::is_magnetic_flux_unit::value)); - EXPECT_TRUE((traits::is_magnetic_flux_unit::value)); - EXPECT_FALSE((traits::is_magnetic_flux_unit::value)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_FALSE((traits::is_magnetic_flux_unit_v)); + EXPECT_TRUE((traits::is_magnetic_flux_unit_v)); + EXPECT_FALSE((traits::is_magnetic_flux_unit_v)); } TEST_F(TypeTraits, is_magnetic_field_strength_unit) { - EXPECT_TRUE((traits::is_magnetic_field_strength_unit< - units::magnetic_field_strength::tesla>::value)); - EXPECT_TRUE((traits::is_magnetic_field_strength_unit::value)); - EXPECT_FALSE((traits::is_magnetic_field_strength_unit::value)); - EXPECT_FALSE((traits::is_magnetic_field_strength_unit::value)); + EXPECT_TRUE((traits::is_magnetic_field_strength_unit_v< + units::magnetic_field_strength::tesla>)); + EXPECT_TRUE((traits::is_magnetic_field_strength_unit_v)); + EXPECT_FALSE((traits::is_magnetic_field_strength_unit_v)); + EXPECT_FALSE((traits::is_magnetic_field_strength_unit_v)); - EXPECT_TRUE((traits::is_magnetic_field_strength_unit::value)); - EXPECT_TRUE((traits::is_magnetic_field_strength_unit::value)); - EXPECT_TRUE((traits::is_magnetic_field_strength_unit::value)); - EXPECT_TRUE((traits::is_magnetic_field_strength_unit::value)); - EXPECT_FALSE((traits::is_magnetic_field_strength_unit::value)); + EXPECT_TRUE((traits::is_magnetic_field_strength_unit_v)); + EXPECT_TRUE((traits::is_magnetic_field_strength_unit_v)); + EXPECT_TRUE((traits::is_magnetic_field_strength_unit_v)); + EXPECT_TRUE((traits::is_magnetic_field_strength_unit_v)); + EXPECT_FALSE((traits::is_magnetic_field_strength_unit_v)); EXPECT_TRUE( - (traits::is_magnetic_field_strength_unit::value)); + (traits::is_magnetic_field_strength_unit_v)); EXPECT_FALSE( - (traits::is_magnetic_field_strength_unit::value)); + (traits::is_magnetic_field_strength_unit_v)); } TEST_F(TypeTraits, is_inductance_unit) { - EXPECT_TRUE((traits::is_inductance_unit::value)); - EXPECT_FALSE((traits::is_inductance_unit::value)); - EXPECT_FALSE((traits::is_inductance_unit::value)); + EXPECT_TRUE((traits::is_inductance_unit_v)); + EXPECT_FALSE((traits::is_inductance_unit_v)); + EXPECT_FALSE((traits::is_inductance_unit_v)); - EXPECT_TRUE((traits::is_inductance_unit::value)); - EXPECT_TRUE((traits::is_inductance_unit::value)); - EXPECT_TRUE((traits::is_inductance_unit::value)); - EXPECT_FALSE((traits::is_inductance_unit::value)); + EXPECT_TRUE((traits::is_inductance_unit_v)); + EXPECT_TRUE((traits::is_inductance_unit_v)); + EXPECT_TRUE((traits::is_inductance_unit_v)); + EXPECT_FALSE((traits::is_inductance_unit_v)); EXPECT_TRUE( - (traits::is_inductance_unit::value)); - EXPECT_FALSE((traits::is_inductance_unit::value)); + (traits::is_inductance_unit_v)); + EXPECT_FALSE((traits::is_inductance_unit_v)); } TEST_F(TypeTraits, is_luminous_flux_unit) { - EXPECT_TRUE((traits::is_luminous_flux_unit::value)); - EXPECT_FALSE((traits::is_luminous_flux_unit::value)); - EXPECT_FALSE((traits::is_luminous_flux_unit::value)); + EXPECT_TRUE((traits::is_luminous_flux_unit_v)); + EXPECT_FALSE((traits::is_luminous_flux_unit_v)); + EXPECT_FALSE((traits::is_luminous_flux_unit_v)); - EXPECT_TRUE((traits::is_luminous_flux_unit::value)); - EXPECT_TRUE((traits::is_luminous_flux_unit::value)); - EXPECT_TRUE((traits::is_luminous_flux_unit::value)); - EXPECT_FALSE((traits::is_luminous_flux_unit::value)); + EXPECT_TRUE((traits::is_luminous_flux_unit_v)); + EXPECT_TRUE((traits::is_luminous_flux_unit_v)); + EXPECT_TRUE((traits::is_luminous_flux_unit_v)); + EXPECT_FALSE((traits::is_luminous_flux_unit_v)); EXPECT_TRUE( - (traits::is_luminous_flux_unit::value)); - EXPECT_FALSE((traits::is_luminous_flux_unit::value)); + (traits::is_luminous_flux_unit_v)); + EXPECT_FALSE((traits::is_luminous_flux_unit_v)); } TEST_F(TypeTraits, is_illuminance_unit) { - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_FALSE((traits::is_illuminance_unit::value)); - EXPECT_FALSE((traits::is_illuminance_unit::value)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_FALSE((traits::is_illuminance_unit_v)); + EXPECT_FALSE((traits::is_illuminance_unit_v)); - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_FALSE((traits::is_illuminance_unit::value)); - EXPECT_TRUE((traits::is_illuminance_unit::value)); - EXPECT_FALSE((traits::is_illuminance_unit::value)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_FALSE((traits::is_illuminance_unit_v)); + EXPECT_TRUE((traits::is_illuminance_unit_v)); + EXPECT_FALSE((traits::is_illuminance_unit_v)); } TEST_F(TypeTraits, is_radioactivity_unit) { - EXPECT_TRUE((traits::is_radioactivity_unit::value)); - EXPECT_FALSE((traits::is_radioactivity_unit::value)); - EXPECT_FALSE((traits::is_radioactivity_unit::value)); + EXPECT_TRUE((traits::is_radioactivity_unit_v)); + EXPECT_FALSE((traits::is_radioactivity_unit_v)); + EXPECT_FALSE((traits::is_radioactivity_unit_v)); - EXPECT_TRUE((traits::is_radioactivity_unit::value)); - EXPECT_TRUE((traits::is_radioactivity_unit::value)); - EXPECT_TRUE((traits::is_radioactivity_unit::value)); - EXPECT_FALSE((traits::is_radioactivity_unit::value)); - EXPECT_TRUE((traits::is_radioactivity_unit::value)); - EXPECT_FALSE((traits::is_radioactivity_unit::value)); + EXPECT_TRUE((traits::is_radioactivity_unit_v)); + EXPECT_TRUE((traits::is_radioactivity_unit_v)); + EXPECT_TRUE((traits::is_radioactivity_unit_v)); + EXPECT_FALSE((traits::is_radioactivity_unit_v)); + EXPECT_TRUE((traits::is_radioactivity_unit_v)); + EXPECT_FALSE((traits::is_radioactivity_unit_v)); } TEST_F(TypeTraits, is_torque_unit) { - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_FALSE((traits::is_torque_unit::value)); - EXPECT_FALSE((traits::is_torque_unit::value)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_FALSE((traits::is_torque_unit_v)); + EXPECT_FALSE((traits::is_torque_unit_v)); - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_FALSE((traits::is_torque_unit::value)); - EXPECT_TRUE((traits::is_torque_unit::value)); - EXPECT_FALSE((traits::is_torque_unit::value)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_FALSE((traits::is_torque_unit_v)); + EXPECT_TRUE((traits::is_torque_unit_v)); + EXPECT_FALSE((traits::is_torque_unit_v)); } TEST_F(TypeTraits, is_area_unit) { - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_FALSE((traits::is_area_unit::value)); - EXPECT_FALSE((traits::is_area_unit::value)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_FALSE((traits::is_area_unit_v)); + EXPECT_FALSE((traits::is_area_unit_v)); - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_FALSE((traits::is_area_unit::value)); - EXPECT_TRUE((traits::is_area_unit::value)); - EXPECT_FALSE((traits::is_area_unit::value)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_FALSE((traits::is_area_unit_v)); + EXPECT_TRUE((traits::is_area_unit_v)); + EXPECT_FALSE((traits::is_area_unit_v)); } TEST_F(TypeTraits, is_volume_unit) { - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_FALSE((traits::is_volume_unit::value)); - EXPECT_FALSE((traits::is_volume_unit::value)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_FALSE((traits::is_volume_unit_v)); + EXPECT_FALSE((traits::is_volume_unit_v)); - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_FALSE((traits::is_volume_unit::value)); - EXPECT_TRUE((traits::is_volume_unit::value)); - EXPECT_FALSE((traits::is_volume_unit::value)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_FALSE((traits::is_volume_unit_v)); + EXPECT_TRUE((traits::is_volume_unit_v)); + EXPECT_FALSE((traits::is_volume_unit_v)); } TEST_F(TypeTraits, is_density_unit) { - EXPECT_TRUE((traits::is_density_unit::value)); - EXPECT_TRUE((traits::is_density_unit::value)); - EXPECT_FALSE((traits::is_density_unit::value)); - EXPECT_FALSE((traits::is_density_unit::value)); + EXPECT_TRUE((traits::is_density_unit_v)); + EXPECT_TRUE((traits::is_density_unit_v)); + EXPECT_FALSE((traits::is_density_unit_v)); + EXPECT_FALSE((traits::is_density_unit_v)); - EXPECT_TRUE((traits::is_density_unit::value)); + EXPECT_TRUE((traits::is_density_unit_v)); EXPECT_TRUE( - (traits::is_density_unit::value)); + (traits::is_density_unit_v)); EXPECT_TRUE( - (traits::is_density_unit::value)); - EXPECT_TRUE((traits::is_density_unit::value)); - EXPECT_FALSE((traits::is_density_unit::value)); - EXPECT_TRUE((traits::is_density_unit::value)); + (traits::is_density_unit_v)); + EXPECT_TRUE((traits::is_density_unit_v)); + EXPECT_FALSE((traits::is_density_unit_v)); + EXPECT_TRUE((traits::is_density_unit_v)); EXPECT_FALSE( - (traits::is_density_unit::value)); + (traits::is_density_unit_v)); } TEST_F(TypeTraits, is_data_unit) { - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_FALSE((traits::is_data_unit::value)); - EXPECT_FALSE((traits::is_data_unit::value)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_FALSE((traits::is_data_unit_v)); + EXPECT_FALSE((traits::is_data_unit_v)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_FALSE((traits::is_data_unit::value)); - EXPECT_TRUE((traits::is_data_unit::value)); - EXPECT_FALSE((traits::is_data_unit::value)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_FALSE((traits::is_data_unit_v)); + EXPECT_TRUE((traits::is_data_unit_v)); + EXPECT_FALSE((traits::is_data_unit_v)); } TEST_F(TypeTraits, is_data_transfer_rate_unit) { - EXPECT_TRUE((traits::is_data_transfer_rate_unit::value)); - EXPECT_TRUE((traits::is_data_transfer_rate_unit::value)); - EXPECT_FALSE((traits::is_data_transfer_rate_unit::value)); - EXPECT_FALSE((traits::is_data_transfer_rate_unit::value)); + EXPECT_TRUE((traits::is_data_transfer_rate_unit_v)); + EXPECT_TRUE((traits::is_data_transfer_rate_unit_v)); + EXPECT_FALSE((traits::is_data_transfer_rate_unit_v)); + EXPECT_FALSE((traits::is_data_transfer_rate_unit_v)); EXPECT_TRUE( - (traits::is_data_transfer_rate_unit::value)); + (traits::is_data_transfer_rate_unit_v)); EXPECT_TRUE(( - traits::is_data_transfer_rate_unit::value)); - EXPECT_TRUE((traits::is_data_transfer_rate_unit< - const gigabytes_per_second_t&>::value)); + traits::is_data_transfer_rate_unit_v)); + EXPECT_TRUE((traits::is_data_transfer_rate_unit_v< + const gigabytes_per_second_t&>)); EXPECT_TRUE( - (traits::is_data_transfer_rate_unit::value)); - EXPECT_FALSE((traits::is_data_transfer_rate_unit::value)); + (traits::is_data_transfer_rate_unit_v)); + EXPECT_FALSE((traits::is_data_transfer_rate_unit_v)); EXPECT_TRUE( - (traits::is_data_transfer_rate_unit::value)); + (traits::is_data_transfer_rate_unit_v)); EXPECT_FALSE( - (traits::is_data_transfer_rate_unit::value)); + (traits::is_data_transfer_rate_unit_v)); } TEST_F(UnitManipulators, squared) { @@ -861,8 +861,8 @@ TEST_F(UnitManipulators, squared) { using scalar_2 = squared; // this is actually nonsensical, and should // also result in a scalar. bool isSame = - std::is_same::type, - typename std::decay>::type>::value; + std::is_same_v, + typename std::decay_t>>; EXPECT_TRUE(isSame); } @@ -877,9 +877,9 @@ TEST_F(UnitManipulators, square_root) { double test; test = convert, meter>(1.0); - EXPECT_TRUE((traits::is_convertible_unit< - typename std::decay>::type, - kilometer>::value)); + EXPECT_TRUE((traits::is_convertible_unit_v< + typename std::decay_t>, + kilometer>)); EXPECT_NEAR(1000.0, test, 5.0e-13); } @@ -893,10 +893,10 @@ TEST_F(UnitManipulators, compound_unit) { using acceleration4 = compound_unit>>; using acceleration5 = compound_unit>>; - bool areSame12 = std::is_same::value; - bool areSame23 = std::is_same::value; - bool areSame34 = std::is_same::value; - bool areSame45 = std::is_same::value; + bool areSame12 = std::is_same_v; + bool areSame23 = std::is_same_v; + bool areSame34 = std::is_same_v; + bool areSame45 = std::is_same_v; EXPECT_TRUE(areSame12); EXPECT_TRUE(areSame23); @@ -907,7 +907,7 @@ TEST_F(UnitManipulators, compound_unit) { using arbitrary1 = compound_unit>; using arbitrary2 = compound_unit; using arbitrary3 = compound_unit; - EXPECT_TRUE((std::is_same::value)); + EXPECT_TRUE((std::is_same_v)); } TEST_F(UnitManipulators, dimensionalAnalysis) { @@ -916,47 +916,47 @@ TEST_F(UnitManipulators, dimensionalAnalysis) { // template parameters), as you can get the resulting unit of the operation. using velocity = units::detail::unit_divide; - bool shouldBeTrue = std::is_same::value; + bool shouldBeTrue = std::is_same_v; EXPECT_TRUE(shouldBeTrue); using acceleration1 = unit, category::acceleration_unit>; using acceleration2 = units::detail::unit_divide< meters, units::detail::unit_multiply>; - shouldBeTrue = std::is_same::value; + shouldBeTrue = std::is_same_v; EXPECT_TRUE(shouldBeTrue); } #ifdef _MSC_VER #if (_MSC_VER >= 1900) TEST_F(UnitContainer, trivial) { - EXPECT_TRUE((std::is_trivial::value)); - EXPECT_TRUE((std::is_trivially_assignable::value)); - EXPECT_TRUE((std::is_trivially_constructible::value)); - EXPECT_TRUE((std::is_trivially_copy_assignable::value)); - EXPECT_TRUE((std::is_trivially_copy_constructible::value)); - EXPECT_TRUE((std::is_trivially_copyable::value)); - EXPECT_TRUE((std::is_trivially_default_constructible::value)); - EXPECT_TRUE((std::is_trivially_destructible::value)); - EXPECT_TRUE((std::is_trivially_move_assignable::value)); - EXPECT_TRUE((std::is_trivially_move_constructible::value)); + EXPECT_TRUE((std::is_trivial_v)); + EXPECT_TRUE((std::is_trivially_assignable_v)); + EXPECT_TRUE((std::is_trivially_constructible_v)); + EXPECT_TRUE((std::is_trivially_copy_assignable_v)); + EXPECT_TRUE((std::is_trivially_copy_constructible_v)); + EXPECT_TRUE((std::is_trivially_copyable_v)); + EXPECT_TRUE((std::is_trivially_default_constructible_v)); + EXPECT_TRUE((std::is_trivially_destructible_v)); + EXPECT_TRUE((std::is_trivially_move_assignable_v)); + EXPECT_TRUE((std::is_trivially_move_constructible_v)); - EXPECT_TRUE((std::is_trivial::value)); - EXPECT_TRUE((std::is_trivially_assignable::value)); - EXPECT_TRUE((std::is_trivially_constructible::value)); - EXPECT_TRUE((std::is_trivially_copy_assignable::value)); - EXPECT_TRUE((std::is_trivially_copy_constructible::value)); - EXPECT_TRUE((std::is_trivially_copyable::value)); - EXPECT_TRUE((std::is_trivially_default_constructible::value)); - EXPECT_TRUE((std::is_trivially_destructible::value)); - EXPECT_TRUE((std::is_trivially_move_assignable::value)); - EXPECT_TRUE((std::is_trivially_move_constructible::value)); + EXPECT_TRUE((std::is_trivial_v)); + EXPECT_TRUE((std::is_trivially_assignable_v)); + EXPECT_TRUE((std::is_trivially_constructible_v)); + EXPECT_TRUE((std::is_trivially_copy_assignable_v)); + EXPECT_TRUE((std::is_trivially_copy_constructible_v)); + EXPECT_TRUE((std::is_trivially_copyable_v)); + EXPECT_TRUE((std::is_trivially_default_constructible_v)); + EXPECT_TRUE((std::is_trivially_destructible_v)); + EXPECT_TRUE((std::is_trivially_move_assignable_v)); + EXPECT_TRUE((std::is_trivially_move_constructible_v)); } #endif #endif TEST_F(UnitContainer, has_value_member) { - EXPECT_TRUE((traits::has_value_member, double>::value)); - EXPECT_FALSE((traits::has_value_member::value)); + EXPECT_TRUE((traits::has_value_member_v, double>)); + EXPECT_FALSE((traits::has_value_member_v)); } TEST_F(UnitContainer, make_unit) { @@ -1162,7 +1162,7 @@ TEST_F(UnitContainer, unitTypeScalarMultiplication) { result_m = a_m * 4.0; EXPECT_NEAR(4.0, result_m(), 5.0e-5); - bool isSame = std::is_same::value; + bool isSame = std::is_same_v; EXPECT_TRUE(isSame); } @@ -1174,27 +1174,27 @@ TEST_F(UnitContainer, unitTypeDivision) { auto c = a_m / a_ft; EXPECT_NEAR(1.0, c, 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); c = a_m / b_m; EXPECT_NEAR(0.5, c, 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); c = a_ft / a_m; EXPECT_NEAR(1.0, c, 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); c = scalar_t(1.0) / 2.0; EXPECT_NEAR(0.5, c, 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); c = 1.0 / scalar_t(2.0); EXPECT_NEAR(0.5, c, 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); double d = scalar_t(1.0) / 2.0; @@ -1202,17 +1202,17 @@ TEST_F(UnitContainer, unitTypeDivision) { auto e = a_m / a_sec; EXPECT_NEAR(0.1, e(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); auto f = a_m / 8.0; EXPECT_NEAR(0.125, f(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); auto g = 4.0 / b_m; EXPECT_NEAR(2.0, g(), 5.0e-5); - isSame = std::is_same>>::value; + isSame = std::is_same_v>>; EXPECT_TRUE(isSame); auto mph = mile_t(60.0) / hour_t(1.0); @@ -1329,7 +1329,7 @@ TEST_F(UnitContainer, valueMethod) { auto test2 = meter_t(4.0).value(); EXPECT_DOUBLE_EQ(4.0, test2); - EXPECT_TRUE((std::is_same::value)); + EXPECT_TRUE((std::is_same_v)); } TEST_F(UnitContainer, convertMethod) { @@ -1613,7 +1613,7 @@ TEST_F(UnitContainer, dBAddition) { EXPECT_NEAR(40.0, result_dbw(), 5.0e-5); result_dbw = dB_t(12.0) + dBW_t(30.0); EXPECT_NEAR(42.0, result_dbw(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); auto result_dbm = dB_t(30.0) + dBm_t(20.0); @@ -1623,8 +1623,8 @@ TEST_F(UnitContainer, dBAddition) { // it works... auto result_dBW2 = dBW_t(10.0) + dBm_t(40.0); EXPECT_NEAR(20.0, result_dBW2(), 5.0e-5); - isSame = std::is_same, double, decibel_scale>>::value; + isSame = std::is_same_v, double, decibel_scale>>; EXPECT_TRUE(isSame); } @@ -1633,22 +1633,22 @@ TEST_F(UnitContainer, dBSubtraction) { auto result_dbw = dBW_t(10.0) - dB_t(30.0); EXPECT_NEAR(-20.0, result_dbw(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); auto result_dbm = dBm_t(100.0) - dB_t(30.0); EXPECT_NEAR(70.0, result_dbm(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); auto result_db = dBW_t(100.0) - dBW_t(80.0); EXPECT_NEAR(20.0, result_db(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); result_db = dB_t(100.0) - dB_t(80.0); EXPECT_NEAR(20.0, result_db(), 5.0e-5); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); } @@ -1666,25 +1666,25 @@ TEST_F(UnitContainer, unit_cast) { EXPECT_EQ(iResult2, unit_cast(test2)); EXPECT_TRUE( - (std::is_same(test1))>::value)); - EXPECT_TRUE((std::is_same(test2))>::value)); + (std::is_same_v(test1))>)); + EXPECT_TRUE((std::is_same_v(test2))>)); } // literal syntax is only supported in GCC 4.7+ and MSVC2015+ #if !defined(_MSC_VER) || _MSC_VER > 1800 TEST_F(UnitContainer, literals) { // basic functionality testing - EXPECT_TRUE((std::is_same::value)); + EXPECT_TRUE((std::is_same_v)); EXPECT_TRUE(meter_t(16.2) == 16.2_m); EXPECT_TRUE(meter_t(16) == 16_m); - EXPECT_TRUE((std::is_same::value)); + EXPECT_TRUE((std::is_same_v)); EXPECT_TRUE(foot_t(11.2) == 11.2_ft); EXPECT_TRUE(foot_t(11) == 11_ft); // auto using literal syntax auto x = 10.0_m; - EXPECT_TRUE((std::is_same::value)); + EXPECT_TRUE((std::is_same_v)); EXPECT_TRUE(meter_t(10) == x); // conversion using literal syntax @@ -1920,8 +1920,8 @@ TEST_F(UnitConversion, solid_angle) { double test; bool same; - same = std::is_same, - traits::base_unit_of>::value; + same = std::is_same_v, + traits::base_unit_of>; EXPECT_TRUE(same); test = convert(72.0); @@ -1961,10 +1961,10 @@ TEST_F(UnitConversion, velocity) { double test; bool same; - same = std::is_same, category::velocity_unit>>::value; + same = std::is_same_v, category::velocity_unit>>; EXPECT_TRUE(same); - same = traits::is_convertible_unit::value; + same = traits::is_convertible_unit_v; EXPECT_TRUE(same); test = convert(1250.0); @@ -1984,10 +1984,10 @@ TEST_F(UnitConversion, angular_velocity) { bool same; same = - std::is_same, category::angular_velocity_unit>>::value; + std::is_same_v, category::angular_velocity_unit>>; EXPECT_TRUE(same); - same = traits::is_convertible_unit::value; + same = traits::is_convertible_unit_v; EXPECT_TRUE(same); test = convert(1.0); @@ -2612,8 +2612,8 @@ TEST_F(UnitConversion, data_transfer_rate) { TEST_F(UnitConversion, pi) { EXPECT_TRUE( - units::traits::is_dimensionless_unit::value); - EXPECT_TRUE(units::traits::is_dimensionless_unit::value); + units::traits::is_dimensionless_unit_v); + EXPECT_TRUE(units::traits::is_dimensionless_unit_v); // implicit conversion/arithmetic EXPECT_NEAR(3.14159, constants::pi, 5.0e-6); @@ -2635,9 +2635,9 @@ TEST_F(UnitConversion, pi) { // auto multiplication EXPECT_TRUE( - (std::is_same::value)); + (std::is_same_v)); EXPECT_TRUE( - (std::is_same::value)); + (std::is_same_v)); EXPECT_NEAR(constants::detail::PI_VAL, (constants::pi * meter_t(1)).value(), 5.0e-10); @@ -2653,9 +2653,9 @@ TEST_F(UnitConversion, pi) { // auto division EXPECT_TRUE( - (std::is_same::value)); + (std::is_same_v)); EXPECT_TRUE( - (std::is_same::value)); + (std::is_same_v)); EXPECT_NEAR(constants::detail::PI_VAL, (constants::pi / second_t(1)).value(), 5.0e-10); @@ -2745,35 +2745,35 @@ TEST_F(UnitMath, max) { } TEST_F(UnitMath, cos) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(scalar_t(-0.41614683654), cos(angle::radian_t(2)), 5.0e-11); EXPECT_NEAR(scalar_t(-0.70710678118), cos(angle::degree_t(135)), 5.0e-11); } TEST_F(UnitMath, sin) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(scalar_t(0.90929742682), sin(angle::radian_t(2)), 5.0e-11); EXPECT_NEAR(scalar_t(0.70710678118), sin(angle::degree_t(135)), 5.0e-11); } TEST_F(UnitMath, tan) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(scalar_t(-2.18503986326), tan(angle::radian_t(2)), 5.0e-11); EXPECT_NEAR(scalar_t(-1.0), tan(angle::degree_t(135)), 5.0e-11); } TEST_F(UnitMath, acos) { EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(2).value(), acos(scalar_t(-0.41614683654)).value(), 5.0e-11); EXPECT_NEAR( @@ -2785,9 +2785,9 @@ TEST_F(UnitMath, acos) { TEST_F(UnitMath, asin) { EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(1.14159265).value(), asin(scalar_t(0.90929742682)).value(), 5.0e-9); EXPECT_NEAR( @@ -2799,9 +2799,9 @@ TEST_F(UnitMath, asin) { TEST_F(UnitMath, atan) { EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(-1.14159265).value(), atan(scalar_t(-2.18503986326)).value(), 5.0e-9); EXPECT_NEAR(angle::degree_t(-45).value(), @@ -2809,9 +2809,9 @@ TEST_F(UnitMath, atan) { } TEST_F(UnitMath, atan2) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(constants::detail::PI_VAL / 4).value(), atan2(scalar_t(2), scalar_t(2)).value(), 5.0e-12); EXPECT_NEAR( @@ -2819,9 +2819,9 @@ TEST_F(UnitMath, atan2) { angle::degree_t(atan2(scalar_t(2), scalar_t(2))).value(), 5.0e-12); - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(constants::detail::PI_VAL / 6).value(), atan2(scalar_t(1), scalar_t(std::sqrt(3))).value(), 5.0e-12); @@ -2832,33 +2832,33 @@ TEST_F(UnitMath, atan2) { } TEST_F(UnitMath, cosh) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(scalar_t(3.76219569108), cosh(angle::radian_t(2)), 5.0e-11); EXPECT_NEAR(scalar_t(5.32275215), cosh(angle::degree_t(135)), 5.0e-9); } TEST_F(UnitMath, sinh) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(scalar_t(3.62686040785), sinh(angle::radian_t(2)), 5.0e-11); EXPECT_NEAR(scalar_t(5.22797192), sinh(angle::degree_t(135)), 5.0e-9); } TEST_F(UnitMath, tanh) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(scalar_t(0.96402758007), tanh(angle::radian_t(2)), 5.0e-11); EXPECT_NEAR(scalar_t(0.98219338), tanh(angle::degree_t(135)), 5.0e-11); } TEST_F(UnitMath, acosh) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(1.316957896924817).value(), acosh(scalar_t(2.0)).value(), 5.0e-11); EXPECT_NEAR(angle::degree_t(75.456129290216893).value(), @@ -2866,9 +2866,9 @@ TEST_F(UnitMath, acosh) { } TEST_F(UnitMath, asinh) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(1.443635475178810).value(), asinh(scalar_t(2)).value(), 5.0e-9); EXPECT_NEAR(angle::degree_t(82.714219883108939).value(), @@ -2876,9 +2876,9 @@ TEST_F(UnitMath, asinh) { } TEST_F(UnitMath, atanh) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(0.549306144334055).value(), atanh(scalar_t(0.5)).value(), 5.0e-9); EXPECT_NEAR(angle::degree_t(31.472923730945389).value(), @@ -2934,38 +2934,38 @@ TEST_F(UnitMath, pow) { auto sq = pow<2>(value); EXPECT_NEAR(100.0, sq(), 5.0e-2); - isSame = std::is_same::value; + isSame = std::is_same_v; EXPECT_TRUE(isSame); auto cube = pow<3>(value); EXPECT_NEAR(1000.0, cube(), 5.0e-2); - isSame = std::is_same>>::value; + isSame = std::is_same_v>>; EXPECT_TRUE(isSame); auto fourth = pow<4>(value); EXPECT_NEAR(10000.0, fourth(), 5.0e-2); - isSame = std::is_same< + isSame = std::is_same_v< decltype(fourth), - unit_t, squared>>>::value; + unit_t, squared>>>; EXPECT_TRUE(isSame); } TEST_F(UnitMath, sqrt) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(meter_t(2.0).value(), sqrt(square_meter_t(4.0)).value(), 5.0e-9); - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(angle::radian_t(4.0).value(), sqrt(steradian_t(16.0)).value(), 5.0e-9); - EXPECT_TRUE((std::is_convertible::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_convertible_v, + typename std::decay_t>)); // for rational conversion (i.e. no integral root) let's check a bunch of // different ways this could go wrong @@ -2978,15 +2978,15 @@ TEST_F(UnitMath, sqrt) { } TEST_F(UnitMath, hypot) { - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(meter_t(5.0).value(), (hypot(meter_t(3.0), meter_t(4.0))).value(), 5.0e-9); - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(foot_t(5.0).value(), (hypot(foot_t(3.0), meter_t(1.2192))).value(), 5.0e-9); } @@ -2994,9 +2994,9 @@ TEST_F(UnitMath, hypot) { TEST_F(UnitMath, ceil) { double val = 101.1; EXPECT_EQ(std::ceil(val), ceil(meter_t(val)).value()); - EXPECT_TRUE((std::is_same::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v, + typename std::decay_t>)); } TEST_F(UnitMath, floor) { @@ -3158,32 +3158,32 @@ TEST_F(Constexpr, stdArray) { #endif TEST_F(CompileTimeArithmetic, unit_value_t) { - typedef unit_value_t mRatio; + using mRatio = unit_value_t; EXPECT_EQ(meter_t(1.5), mRatio::value()); } TEST_F(CompileTimeArithmetic, is_unit_value_t) { using mRatio = unit_value_t; - EXPECT_TRUE((traits::is_unit_value_t::value)); - EXPECT_FALSE((traits::is_unit_value_t::value)); - EXPECT_FALSE((traits::is_unit_value_t::value)); + EXPECT_TRUE((traits::is_unit_value_t_v)); + EXPECT_FALSE((traits::is_unit_value_t_v)); + EXPECT_FALSE((traits::is_unit_value_t_v)); - EXPECT_TRUE((traits::is_unit_value_t::value)); - EXPECT_FALSE((traits::is_unit_value_t::value)); - EXPECT_FALSE((traits::is_unit_value_t::value)); + EXPECT_TRUE((traits::is_unit_value_t_v)); + EXPECT_FALSE((traits::is_unit_value_t_v)); + EXPECT_FALSE((traits::is_unit_value_t_v)); } TEST_F(CompileTimeArithmetic, is_unit_value_t_category) { using mRatio = unit_value_t; EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); EXPECT_FALSE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); EXPECT_FALSE(( - traits::is_unit_value_t_category::value)); + traits::is_unit_value_t_category_v)); EXPECT_FALSE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); } TEST_F(CompileTimeArithmetic, unit_value_add) { @@ -3192,39 +3192,39 @@ TEST_F(CompileTimeArithmetic, unit_value_add) { using sum = unit_value_add; EXPECT_EQ(meter_t(3.0), sum::value()); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using ftRatio = unit_value_t; using sumf = unit_value_add; EXPECT_TRUE(( - std::is_same::type, - typename std::decay::type>::value)); + std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(5.92125984, sumf::value().value(), 5.0e-8); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using cRatio = unit_value_t; using fRatio = unit_value_t; using sumc = unit_value_add; EXPECT_TRUE(( - std::is_same::type, - typename std::decay::type>::value)); + std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(2.11111111111, sumc::value().value(), 5.0e-8); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using rRatio = unit_value_t; using dRatio = unit_value_t; using sumr = unit_value_add; EXPECT_TRUE(( - std::is_same::type, - typename std::decay::type>::value)); + std::is_same_v, + typename std::decay_t>)); EXPECT_NEAR(1.05235988, sumr::value().value(), 5.0e-8); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); } TEST_F(CompileTimeArithmetic, unit_value_subtract) { @@ -3233,39 +3233,39 @@ TEST_F(CompileTimeArithmetic, unit_value_subtract) { using diff = unit_value_subtract; EXPECT_EQ(meter_t(0), diff::value()); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using ftRatio = unit_value_t; using difff = unit_value_subtract; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(-3.92125984, difff::value().value(), 5.0e-8); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using cRatio = unit_value_t; using fRatio = unit_value_t; using diffc = unit_value_subtract; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(-0.11111111111, diffc::value().value(), 5.0e-8); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using rRatio = unit_value_t; using dRatio = unit_value_t; using diffr = unit_value_subtract; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(0.947640122, diffr::value().value(), 5.0e-8); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); } TEST_F(CompileTimeArithmetic, unit_value_multiply) { @@ -3275,63 +3275,63 @@ TEST_F(CompileTimeArithmetic, unit_value_multiply) { using product = unit_value_multiply; EXPECT_EQ(square_meter_t(4), product::value()); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using productM = unit_value_multiply; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(4.0, productM::value().value(), 5.0e-7); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using productF = unit_value_multiply; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(43.0556444224, productF::value().value(), 5.0e-6); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using productF2 = unit_value_multiply; EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(43.0556444224, productF2::value().value(), 5.0e-8); EXPECT_TRUE(( - traits::is_unit_value_t_category::value)); + traits::is_unit_value_t_category_v)); using nRatio = unit_value_t; using productN = unit_value_multiply; EXPECT_FALSE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); - EXPECT_TRUE((std::is_convertible< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); + EXPECT_TRUE((std::is_convertible_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(32.8084, productN::value().value(), 5.0e-8); EXPECT_NEAR(10.0, (productN::value().convert().value()), 5.0e-7); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using r1Ratio = unit_value_t; using r2Ratio = unit_value_t; using productR = unit_value_multiply; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(2.42, productR::value().value(), 5.0e-8); EXPECT_NEAR(7944.39137, (productR::value().convert().value()), 5.0e-6); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); } TEST_F(CompileTimeArithmetic, unit_value_divide) { @@ -3341,116 +3341,116 @@ TEST_F(CompileTimeArithmetic, unit_value_divide) { using product = unit_value_divide; EXPECT_EQ(scalar_t(1), product::value()); EXPECT_TRUE(( - traits::is_unit_value_t_category::value)); + traits::is_unit_value_t_category_v)); using productM = unit_value_divide; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(1, productM::value().value(), 5.0e-7); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using productF = unit_value_divide; - EXPECT_TRUE((std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(1.0, productF::value().value(), 5.0e-6); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using productF2 = unit_value_divide; EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(1.0, productF2::value().value(), 5.0e-8); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using sRatio = unit_value_t; using productMS = unit_value_divide; EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(0.2, productMS::value().value(), 5.0e-8); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); using rRatio = unit_value_t; using productRS = unit_value_divide; EXPECT_TRUE( - (std::is_same< - typename std::decay::type, - typename std::decay::type>::value)); + (std::is_same_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(2, productRS::value().value(), 5.0e-8); EXPECT_NEAR(114.592, (productRS::value().convert().value()), 5.0e-4); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); } TEST_F(CompileTimeArithmetic, unit_value_power) { using mRatio = unit_value_t; using sq = unit_value_power; - EXPECT_TRUE((std::is_convertible< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_convertible_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(4, sq::value().value(), 5.0e-8); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using rRatio = unit_value_t; using sqr = unit_value_power; - EXPECT_TRUE((std::is_convertible< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_convertible_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(3.24, sqr::value().value(), 5.0e-8); EXPECT_NEAR(10636.292574038049895092690529904, (sqr::value().convert().value()), 5.0e-10); - EXPECT_TRUE((traits::is_unit_value_t_category::value)); + EXPECT_TRUE((traits::is_unit_value_t_category_v)); } TEST_F(CompileTimeArithmetic, unit_value_sqrt) { using mRatio = unit_value_t; using root = unit_value_sqrt; - EXPECT_TRUE((std::is_convertible< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_convertible_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(3.16227766017, root::value().value(), 5.0e-9); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using hRatio = unit_value_t; using rooth = unit_value_sqrt; - EXPECT_TRUE((std::is_convertible< - typename std::decay::type, - typename std::decay::type>::value)); + EXPECT_TRUE((std::is_convertible_v< + typename std::decay_t, + typename std::decay_t>)); EXPECT_NEAR(2.69920623253, rooth::value().value(), 5.0e-8); EXPECT_NEAR(269.920623, rooth::value().convert().value(), 5.0e-6); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); using rRatio = unit_value_t; using rootr = unit_value_sqrt; - EXPECT_TRUE((traits::is_angle_unit::value)); + EXPECT_TRUE((traits::is_angle_unit_v)); EXPECT_NEAR(1.3416407865, rootr::value().value(), 5.0e-8); EXPECT_NEAR(76.870352574, rootr::value().convert().value(), 5.0e-6); EXPECT_TRUE( - (traits::is_unit_value_t_category::value)); + (traits::is_unit_value_t_category_v)); } TEST_F(CaseStudies, radarRangeEquation) {