refactor: __cpp_explicit_this_parameter implementation of number() added

This commit is contained in:
Mateusz Pusz
2022-12-20 17:23:29 +01:00
parent c51f6a9d29
commit 915ca82a0b

View File

@@ -147,10 +147,18 @@ public:
quantity& operator=(quantity&&) = default;
// data access
#ifdef __cpp_explicit_this_parameter
template<typename Self>
[[nodiscard]] constexpr auto&& number(this Self&& self) noexcept
{
return std::forward<Self>(self).number_;
}
#else
[[nodiscard]] constexpr rep& number() & noexcept { return number_; }
[[nodiscard]] constexpr const rep& number() const& noexcept { return number_; }
[[nodiscard]] constexpr rep&& number() && noexcept { return std::move(number_); }
[[nodiscard]] constexpr const rep&& number() const&& noexcept { return std::move(number_); }
#endif
template<Unit U>
requires quantity_convertible_to_<quantity, quantity<::units::reference<quantity_spec, U{}>{}, Rep>>