Math/Angle: Fix compilation & warning on GCC < 8

This commit is contained in:
Jérôme Leclercq 2018-10-12 17:09:39 +02:00
parent 4c4822eef9
commit 5e45983953
2 changed files with 11 additions and 11 deletions

View File

@ -26,7 +26,7 @@ namespace Nz
{ {
public: public:
Angle() = default; Angle() = default;
Angle(T value); Angle(T angle);
template<typename U> explicit Angle(const Angle<Unit, U>& Angle); template<typename U> explicit Angle(const Angle<Unit, U>& Angle);
Angle(const Angle&) = default; Angle(const Angle&) = default;
~Angle() = default; ~Angle() = default;
@ -51,8 +51,8 @@ namespace Nz
Angle<AngleUnit::Radian, T> ToRadianAngle() const; Angle<AngleUnit::Radian, T> ToRadianAngle() const;
String ToString() const; String ToString() const;
template<AngleUnit U = Unit, typename = std::enable_if_t<U != AngleUnit::Degree>> operator Angle<AngleUnit::Degree, T>(); template<AngleUnit U = Unit, typename = std::enable_if_t<U != AngleUnit::Degree>> operator Angle<AngleUnit::Degree, T>() const { return ToDegreeAngle(); } // GCC < 8 bug
template<AngleUnit U = Unit, typename = std::enable_if_t<U != AngleUnit::Radian>> operator Angle<AngleUnit::Radian, T>(); template<AngleUnit U = Unit, typename = std::enable_if_t<U != AngleUnit::Radian>> operator Angle<AngleUnit::Radian, T>() const { return ToRadianAngle(); } // GCC < 8 bug
Angle& operator=(const Angle&) = default; Angle& operator=(const Angle&) = default;

View File

@ -150,8 +150,8 @@ namespace Nz
* \param value value of the angle * \param value value of the angle
*/ */
template<AngleUnit Unit, typename T> template<AngleUnit Unit, typename T>
Angle<Unit, T>::Angle(T value) : Angle<Unit, T>::Angle(T angle) :
value(value) value(angle)
{ {
} }
@ -345,23 +345,23 @@ namespace Nz
* \brief Returns the degree angle that is equivalent to this one * \brief Returns the degree angle that is equivalent to this one
* \return Equivalent degree angle * \return Equivalent degree angle
*/ */
template<AngleUnit Unit, typename T> /*template<AngleUnit Unit, typename T>
template<AngleUnit U, typename> template<AngleUnit U, typename>
Angle<Unit, T>::operator Angle<AngleUnit::Degree, T>() Angle<Unit, T>::operator Angle<AngleUnit::Degree, T>() const
{ {
return ToDegreeAngle(); return ToDegreeAngle();
} }*/
/*! /*!
* \brief Converts the angle to a string representation * \brief Converts the angle to a string representation
* \return String representation of the angle * \return String representation of the angle
*/ */
template<AngleUnit Unit, typename T> /*template<AngleUnit Unit, typename T>
template<AngleUnit U, typename> template<AngleUnit U, typename>
Angle<Unit, T>::operator Angle<AngleUnit::Radian, T>() Angle<Unit, T>::operator Angle<AngleUnit::Radian, T>() const
{ {
return ToRadianAngle(); return ToRadianAngle();
} }*/
/*! /*!
* \brief Addition operator * \brief Addition operator