add Scalar<T> + cast to T

This commit is contained in:
Christian Zimmermann 2018-04-29 17:41:28 +02:00
parent 714eecd663
commit 6e1da5eed3

View file

@ -50,6 +50,8 @@ namespace MultiArrayTools
virtual const T* data() const override; virtual const T* data() const override;
virtual T* data() override; virtual T* data() override;
operator T() const;
template <typename U, class... SRanges2> template <typename U, class... SRanges2>
friend class MultiArray; friend class MultiArray;
@ -57,6 +59,9 @@ namespace MultiArrayTools
private: private:
std::vector<T> mCont; std::vector<T> mCont;
}; };
template <typename T>
using Scalar = MultiArray<T>;
} }
@ -193,6 +198,13 @@ namespace MultiArrayTools
{ {
return mCont.data(); return mCont.data();
} }
template <typename T, class... SRanges>
MultiArray<T,SRanges...>::operator T() const
{
static_assert( sizeof...(SRanges) == 0, "try to cast non-scalar type into scalar" );
return mCont[0];
}
} }
#endif #endif