diff --git a/src/core/include/units/bits/expression_template.h b/src/core/include/units/bits/expression_template.h index 15e8be56..f7ee9ff0 100644 --- a/src/core/include/units/bits/expression_template.h +++ b/src/core/include/units/bits/expression_template.h @@ -287,7 +287,7 @@ public: }; template typename To> -constexpr auto expr_expression_impl() +[[nodiscard]] constexpr auto expr_expression_impl() { constexpr std::size_t num = type_list_size; constexpr std::size_t den = type_list_size; @@ -312,7 +312,7 @@ using expr_expression = decltype(expr_expression_impl typename Pred, template typename To> -constexpr auto get_optimized_expression() +[[nodiscard]] constexpr auto get_optimized_expression() { using num_list = expr_consolidate; using den_list = expr_consolidate; @@ -332,7 +332,7 @@ constexpr auto get_optimized_expression() */ template typename Pred, template typename To> -constexpr auto expr_multiply() +[[nodiscard]] constexpr auto expr_multiply() { if constexpr (is_same_v) { return T2{}; @@ -356,7 +356,7 @@ constexpr auto expr_multiply() template typename Pred, template typename To> -constexpr auto expr_divide() +[[nodiscard]] constexpr auto expr_divide() { if constexpr (is_same_v) { return OneType{}; @@ -378,7 +378,7 @@ constexpr auto expr_divide() } template typename To> -constexpr auto expr_invert() +[[nodiscard]] constexpr auto expr_invert() { if constexpr (is_specialization_of) return expr_expression{}; diff --git a/src/core/include/units/unit.h b/src/core/include/units/unit.h index 24e1b0eb..697100f3 100644 --- a/src/core/include/units/unit.h +++ b/src/core/include/units/unit.h @@ -221,26 +221,26 @@ using type_list_of_unit_less = expr_less; } // namespace detail template -constexpr Unit auto operator*(U1, U2) +[[nodiscard]] constexpr Unit auto operator*(U1, U2) { return detail::expr_multiply(); } template -constexpr Unit auto operator/(U1, U2) +[[nodiscard]] constexpr Unit auto operator/(U1, U2) { return detail::expr_divide(); } template -constexpr Unit auto operator/(int value, U) +[[nodiscard]] constexpr Unit auto operator/(int value, U) { gsl_Assert(value == 1); return detail::expr_invert(); } template -constexpr bool operator==(U1, U2) +[[nodiscard]] constexpr bool operator==(U1, U2) { return false; }