[wpimath] Constexprify units unary operators (#4138)

Fixes #4137.
This commit is contained in:
Tyler Veness
2022-03-29 08:42:08 -07:00
committed by GitHub
parent 069f932e59
commit 2e462a19d3
2 changed files with 5 additions and 2 deletions

View File

@@ -2328,7 +2328,7 @@ namespace units
// unary addition: +T
template<class Units, typename T, template<typename> class NonLinearScale>
inline unit_t<Units, T, NonLinearScale> operator+(const unit_t<Units, T, NonLinearScale>& u) noexcept
constexpr inline unit_t<Units, T, NonLinearScale> operator+(const unit_t<Units, T, NonLinearScale>& u) noexcept
{
return u;
}
@@ -2352,7 +2352,7 @@ namespace units
// unary addition: -T
template<class Units, typename T, template<typename> class NonLinearScale>
inline unit_t<Units, T, NonLinearScale> operator-(const unit_t<Units, T, NonLinearScale>& u) noexcept
constexpr inline unit_t<Units, T, NonLinearScale> operator-(const unit_t<Units, T, NonLinearScale>& u) noexcept
{
return unit_t<Units, T, NonLinearScale>(-u());
}

View File

@@ -3063,14 +3063,17 @@ TEST_F(Constexpr, construction) {
constexpr meter_t result0(0);
constexpr auto result1 = make_unit<meter_t>(1);
constexpr auto result2 = meter_t(2);
constexpr auto result3 = -3_m;
EXPECT_EQ(meter_t(0), result0);
EXPECT_EQ(meter_t(1), result1);
EXPECT_EQ(meter_t(2), result2);
EXPECT_EQ(meter_t(-3), result3);
EXPECT_TRUE(noexcept(result0));
EXPECT_TRUE(noexcept(result1));
EXPECT_TRUE(noexcept(result2));
EXPECT_TRUE(noexcept(result3));
}
TEST_F(Constexpr, constants) {