diff --git a/src/Magnum/Math/Range.h b/src/Magnum/Math/Range.h index d4a7d9e4c..2d355c061 100644 --- a/src/Magnum/Math/Range.h +++ b/src/Magnum/Math/Range.h @@ -259,7 +259,14 @@ template class Range2D: public Range<2, T> { * @brief Construct range from external representation * @todoc Remove workaround when Doxygen no longer chokes on that line */ - template::from(std::declval()))> constexpr explicit Range2D(const U& other) + template::from(std::declval())) + #else + decltype(Implementation::RangeConverter<2, T, U>()) + #endif + > + constexpr explicit Range2D(const U& other) #ifndef DOXYGEN_GENERATING_OUTPUT /* MSVC 2015 can't handle {} here */ : Range<2, T>(Implementation::RangeConverter<2, T, U>::from(other)) diff --git a/src/Magnum/Math/Vector2.h b/src/Magnum/Math/Vector2.h index c32129762..8d4088e0e 100644 --- a/src/Magnum/Math/Vector2.h +++ b/src/Magnum/Math/Vector2.h @@ -159,7 +159,14 @@ template class Vector2: public Vector<2, T> { {} /** @brief Construct vector from external representation */ - template::from(std::declval()))> constexpr explicit Vector2(const U& other): Vector<2, T>(Implementation::VectorConverter<2, T, U>::from(other)) {} + template::from(std::declval())) + #else + decltype(Implementation::VectorConverter<2, T, U>()) + #endif + > + constexpr explicit Vector2(const U& other): Vector<2, T>(Implementation::VectorConverter<2, T, U>::from(other)) {} /** @brief Copy constructor */ constexpr Vector2(const Vector<2, T>& other): Vector<2, T>(other) {} diff --git a/src/Magnum/Math/Vector3.h b/src/Magnum/Math/Vector3.h index 57299eaea..26774fc2b 100644 --- a/src/Magnum/Math/Vector3.h +++ b/src/Magnum/Math/Vector3.h @@ -190,7 +190,14 @@ template class Vector3: public Vector<3, T> { {} /** @brief Construct vector from external representation */ - template::from(std::declval()))> constexpr explicit Vector3(const U& other): Vector<3, T>(Implementation::VectorConverter<3, T, U>::from(other)) {} + template::from(std::declval())) + #else + decltype(Implementation::VectorConverter<3, T, U>()) + #endif + > + constexpr explicit Vector3(const U& other): Vector<3, T>(Implementation::VectorConverter<3, T, U>::from(other)) {} /** @brief Copy constructor */ constexpr Vector3(const Vector<3, T>& other): Vector<3, T>(other) {}