refactor: nodiscard to type level

This commit is contained in:
Johel Ernesto Guerrero Peña
2020-05-31 15:07:27 -04:00
committed by Mateusz Pusz
parent ef316a3dba
commit d6d17c6c6e

View File

@@ -38,7 +38,7 @@ namespace units {
* @tparam Rep a type to be used to represent values of a quantity point * @tparam Rep a type to be used to represent values of a quantity point
*/ */
template<Dimension D, UnitOf<D> U, Scalar Rep = double> template<Dimension D, UnitOf<D> U, Scalar Rep = double>
class quantity_point { class [[nodiscard]] quantity_point {
public: public:
using quantity_type = quantity<D, U, Rep>; using quantity_type = quantity<D, U, Rep>;
using dimension = typename quantity_type::dimension; using dimension = typename quantity_type::dimension;
@@ -67,7 +67,7 @@ public:
[[nodiscard]] constexpr quantity_type relative() const noexcept { return q_; } [[nodiscard]] constexpr quantity_type relative() const noexcept { return q_; }
template<typename Q = quantity_type> template<typename Q = quantity_type>
[[nodiscard]] static constexpr quantity_point min() noexcept static constexpr quantity_point min() noexcept
requires requires { Q::min(); } requires requires { Q::min(); }
// requires requires { quantity_type::min(); } // TODO gated by gcc-9 (fixed in gcc-10) // requires requires { quantity_type::min(); } // TODO gated by gcc-9 (fixed in gcc-10)
{ {
@@ -75,7 +75,7 @@ public:
} }
template<typename Q = quantity_type> template<typename Q = quantity_type>
[[nodiscard]] static constexpr quantity_point max() noexcept static constexpr quantity_point max() noexcept
requires requires { Q::max(); } requires requires { Q::max(); }
// requires requires { quantity_type::max(); } // TODO gated by gcc-9 (fixed in gcc-10) // requires requires { quantity_type::max(); } // TODO gated by gcc-9 (fixed in gcc-10)
{ {
@@ -202,19 +202,19 @@ public:
template<typename D, typename U, typename Rep> template<typename D, typename U, typename Rep>
quantity_point(quantity<D, U, Rep>) -> quantity_point<D, U, Rep>; quantity_point(quantity<D, U, Rep>) -> quantity_point<D, U, Rep>;
[[nodiscard]] constexpr QuantityPoint AUTO operator+(const QuantityPoint AUTO& lhs, const Quantity AUTO& rhs) constexpr QuantityPoint AUTO operator+(const QuantityPoint AUTO& lhs, const Quantity AUTO& rhs)
requires requires { lhs.relative() + rhs; } requires requires { lhs.relative() + rhs; }
{ {
return quantity_point(lhs.relative() + rhs); return quantity_point(lhs.relative() + rhs);
} }
[[nodiscard]] constexpr QuantityPoint AUTO operator+(const Quantity AUTO& lhs, const QuantityPoint AUTO& rhs) constexpr QuantityPoint AUTO operator+(const Quantity AUTO& lhs, const QuantityPoint AUTO& rhs)
requires requires { rhs + lhs; } requires requires { rhs + lhs; }
{ {
return rhs + lhs; return rhs + lhs;
} }
[[nodiscard]] constexpr QuantityPoint AUTO operator-(const QuantityPoint AUTO& lhs, const Quantity AUTO& rhs) constexpr QuantityPoint AUTO operator-(const QuantityPoint AUTO& lhs, const Quantity AUTO& rhs)
requires requires { lhs.relative() - rhs; } requires requires { lhs.relative() - rhs; }
{ {
return quantity_point(lhs.relative() - rhs); return quantity_point(lhs.relative() - rhs);