Fix return type for TensorEvaluator<TensorSlicingOp>::data

This commit is contained in:
Benoit Steiner 2015-09-17 09:40:21 -07:00
parent 9d993c709b
commit 31afdcb4c2
2 changed files with 13 additions and 2 deletions

View File

@ -463,8 +463,8 @@ struct TensorEvaluator<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Devi
return m_impl.coeff(inputCoords);
}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType* data() const {
CoeffReturnType* result = m_impl.data();
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar* data() const {
Scalar* result = m_impl.data();
if (result) {
Index offset = 0;
if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {

View File

@ -114,6 +114,16 @@ static void test_simple_slice()
}
}
static void test_const_slice()
{
const float b[1] = {42};
TensorMap<Tensor<const float, 1> > m(b, 1);
DSizes<DenseIndex, 1> offsets;
offsets[0] = 0;
TensorRef<Tensor<const float, 1> > slice_ref(m.slice(offsets, m.dimensions()));
VERIFY_IS_EQUAL(slice_ref(0), 42);
}
template<int DataLayout>
static void test_slice_in_expr() {
typedef Matrix<float, Dynamic, Dynamic, DataLayout> Mtx;
@ -333,6 +343,7 @@ void test_cxx11_tensor_morphing()
CALL_SUBTEST(test_simple_slice<ColMajor>());
CALL_SUBTEST(test_simple_slice<RowMajor>());
CALL_SUBTEST(test_const_slice());
CALL_SUBTEST(test_slice_in_expr<ColMajor>());
CALL_SUBTEST(test_slice_in_expr<RowMajor>());
CALL_SUBTEST(test_slice_as_lvalue<ColMajor>());