]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/multi_array/test/fail_ref_cview2.cpp
1 // Copyright 2002 The Trustees of Indiana University.
3 // Use, modification and distribution is subject to the Boost Software
4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
7 // Boost.MultiArray Library
8 // Authors: Ronald Garcia
11 // See http://www.boost.org/libs/multi_array for documentation.
14 // fail_ref_cview2.cpp
15 // ensure const_array_view cannot be converted to array_view
18 #include <boost/multi_array.hpp>
20 #include <boost/core/lightweight_test.hpp>
22 #include <boost/array.hpp>
23 #include <boost/type.hpp>
29 typedef boost::multi_array_ref
<int,ndims
> array_ref
;
31 boost::array
<array_ref::size_type
,ndims
> sma_dims
= {{2,3,4}};
33 int data
[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,
34 14,15,16,17,18,19,20,21,22,23};
36 array_ref
sma(data
,sma_dims
);
40 // [base,stride,bound)
41 // [0,1,2), [1,1,3), [0,2,4)
44 const array_ref
& csma
= sma
;
45 typedef array_ref::index_range range
;
46 array_ref::index_gen indices
;
47 array_ref::array_view
<ndims
>::type csma2
=
48 csma
[indices
[range(0,2)][range(1,3)][range(0,4,2)]];
50 for (array_ref::index i
= 0; i
!= 2; ++i
)
51 for (array_ref::index j
= 0; j
!= 2; ++j
)
52 for (array_ref::index k
= 0; k
!= 2; ++k
)
53 csma2
[i
][j
][k
] = 0; // FAIL! csma2 is read only
55 return boost::report_errors();