diff options
author | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2015-07-13 11:16:37 -0700 |
---|---|---|
committer | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2015-07-13 11:16:37 -0700 |
commit | b80036abec3c008306852334d7c8f057fee11d54 (patch) | |
tree | d66953452950cf8d4a6eccb9606f081a857f12ba /unsupported/Eigen/CXX11/src | |
parent | 3912ca0d5388fc58853d2fd8f1773e920f55523b (diff) |
Enabled the construction of a fixed sized tensor directly from an expression.
Diffstat (limited to 'unsupported/Eigen/CXX11/src')
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorBase.h | 2 | ||||
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h | 17 |
2 files changed, 19 insertions, 0 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h b/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h index 165bd8a89..ca712f9c5 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h @@ -492,6 +492,7 @@ class TensorBase<Derived, ReadOnlyAccessors> protected: template <typename Scalar, std::size_t NumIndices, int Options, typename IndexType> friend class Tensor; + template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize; template <typename OtherDerived, int AccessLevel> friend class TensorBase; EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); } @@ -508,6 +509,7 @@ class TensorBase<Derived, WriteAccessors> : public TensorBase<Derived, ReadOnlyA static const int NumDimensions = DerivedTraits::NumDimensions; template <typename Scalar, std::size_t NumIndices, int Options, typename IndexType> friend class Tensor; + template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize; template <typename OtherDerived, int AccessLevel> friend class TensorBase; EIGEN_DEVICE_FUNC diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h b/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h index 76998b690..5e511dc4b 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h @@ -197,6 +197,23 @@ class TensorFixedSize : public TensorBase<TensorFixedSize<Scalar_, Dimensions_, } #endif + template<typename OtherDerived> + EIGEN_DEVICE_FUNC + EIGEN_STRONG_INLINE TensorFixedSize(const TensorBase<OtherDerived, ReadOnlyAccessors>& other) + { + typedef TensorAssignOp<TensorFixedSize, const OtherDerived> Assign; + Assign assign(*this, other.derived()); + internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice()); + } + template<typename OtherDerived> + EIGEN_DEVICE_FUNC + EIGEN_STRONG_INLINE TensorFixedSize(const TensorBase<OtherDerived, WriteAccessors>& other) + { + typedef TensorAssignOp<TensorFixedSize, const OtherDerived> Assign; + Assign assign(*this, other.derived()); + internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice()); + } + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorFixedSize& operator=(const TensorFixedSize& other) { |