From c12886b4feae04596098741d741b9e9deaaa49e9 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Sun, 22 Jul 2018 01:30:26 +0200 Subject: [PATCH] Provide explicit default constructors for TinyMatrix and TinyVector g++-7 does not like the mix of constexpr and these implicit constructors --- src/algebra/TinyMatrix.hpp | 14 +++++++------- src/algebra/TinyVector.hpp | 12 +++--------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/algebra/TinyMatrix.hpp b/src/algebra/TinyMatrix.hpp index 2eced15cf..eda3b5f19 100644 --- a/src/algebra/TinyMatrix.hpp +++ b/src/algebra/TinyMatrix.hpp @@ -46,11 +46,8 @@ public: KOKKOS_INLINE_FUNCTION constexpr friend TinyMatrix operator*(const T& t, const TinyMatrix& A) { - TinyMatrix tA; - for (size_t i=0; i<N*N; ++i) { - tA.m_values[i] = t * A.m_values[i]; - } - return std::move(tA); + TinyMatrix B = A; + return std::move(B *= t); } KOKKOS_INLINE_FUNCTION @@ -242,7 +239,10 @@ public: } KOKKOS_INLINE_FUNCTION - constexpr TinyMatrix() noexcept = default; + constexpr TinyMatrix() noexcept + { + ; + } KOKKOS_INLINE_FUNCTION constexpr TinyMatrix(const ZeroType& z) noexcept @@ -273,7 +273,7 @@ public: } KOKKOS_INLINE_FUNCTION - constexpr TinyMatrix(TinyMatrix&& A) noexcept = default; + TinyMatrix(TinyMatrix&& A) noexcept = default; KOKKOS_INLINE_FUNCTION ~TinyMatrix()=default; diff --git a/src/algebra/TinyVector.hpp b/src/algebra/TinyVector.hpp index 826ba9819..c783bb796 100644 --- a/src/algebra/TinyVector.hpp +++ b/src/algebra/TinyVector.hpp @@ -78,11 +78,8 @@ class TinyVector KOKKOS_INLINE_FUNCTION constexpr friend TinyVector operator*(const T& t, const TinyVector& v) { - TinyVector tv; - for (size_t i=0; i<N; ++i) { - tv.m_values[i] = t * v.m_values[i]; - } - return std::move(tv); + TinyVector w = v; + return std::move(w*=t); } KOKKOS_INLINE_FUNCTION @@ -230,10 +227,7 @@ class TinyVector constexpr TinyVector(TinyVector&& v) noexcept = default; KOKKOS_INLINE_FUNCTION - ~TinyVector() noexcept - { - ; - } + ~TinyVector() noexcept = default; }; template <size_t N, typename T> -- GitLab