]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/multi_array/test/fail_ref_cview3.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_cview3.cpp -
15 // ensure const_array_view doesn't allow assignment.
18 #include "boost/multi_array.hpp"
20 #include "boost/test/minimal.hpp"
22 #include "boost/array.hpp"
23 #include "boost/type.hpp"
26 test_main(int,char*[])
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
;
46 typedef array_ref::index_range range
;
47 array_ref::index_gen indices
;
48 array_ref::const_array_view
<ndims
>::type csma2
=
49 csma
[indices
[range(0,2)][range(1,3)][range(0,4,2)]];
51 for (array_ref::index i
= 0; i
!= 2; ++i
)
52 for (array_ref::index j
= 0; j
!= 2; ++j
)
53 for (array_ref::index k
= 0; k
!= 2; ++k
)
54 csma2
[i
][j
][k
] = 0; // FAIL! csma2 is read only.
56 return boost::exit_success
;