diff --git a/src/Magnum/Math/Dual.h b/src/Magnum/Math/Dual.h index f660c4d5d..f633c3006 100644 --- a/src/Magnum/Math/Dual.h +++ b/src/Magnum/Math/Dual.h @@ -81,7 +81,13 @@ template class Dual { #ifdef DOXYGEN_GENERATING_OUTPUT constexpr explicit Dual(ZeroInitT) noexcept; #else - template::value && std::is_trivial::value, int>::type = 0> constexpr explicit Dual(ZeroInitT) noexcept: _real{}, _dual{} {} + template::value && std::has_trivial_default_constructor::value + #else + std::is_standard_layout::value && std::is_trivially_constructible::value + #endif + , int>::type = 0> constexpr explicit Dual(ZeroInitT) noexcept: _real{}, _dual{} {} template::value, int>::type = 0> constexpr explicit Dual(ZeroInitT) noexcept: _real{ZeroInit}, _dual{ZeroInit} {} #endif @@ -90,7 +96,13 @@ template class Dual { #ifdef DOXYGEN_GENERATING_OUTPUT explicit Dual(NoInitT) noexcept; #else - template::value && std::is_trivial::value, int>::type = 0> explicit Dual(Magnum::NoInitT) noexcept {} + template::value && std::has_trivial_default_constructor::value + #else + std::is_standard_layout::value && std::is_trivially_constructible::value + #endif + , int>::type = 0> explicit Dual(Magnum::NoInitT) noexcept {} template::value, int>::type = 0> explicit Dual(Magnum::NoInitT) noexcept: _real{Magnum::NoInit}, _dual{Magnum::NoInit} {} #endif