• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // Copyright 2002 The Trustees of Indiana University.
2  
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)
6  
7  //  Boost.MultiArray Library
8  //  Authors: Ronald Garcia
9  //           Jeremy Siek
10  //           Andrew Lumsdaine
11  //  See http://www.boost.org/libs/multi_array for documentation.
12  
13  //
14  // fail_csubarray3.cpp
15  //  Testing constness of subarray operations.
16  //
17  
18  #include <boost/multi_array.hpp>
19  
20  #include <boost/core/lightweight_test.hpp>
21  
22  #include <boost/array.hpp>
23  
24  int
main()25  main()
26  {
27    const int ndims=3;
28    typedef boost::multi_array<int,ndims> array;
29  
30    boost::array<array::size_type,ndims> sma_dims = {{2,3,4}};
31    array sma(sma_dims);
32  
33    int num = 0;
34    for (array::index i = 0; i != 2; ++i)
35      for (array::index j = 0; j != 3; ++j)
36        for (array::index k = 0; k != 4; ++k)
37          sma[i][j][k] = num++;
38  
39    const array& sma_const = sma;
40  
41    array::const_subarray<ndims-1>::type sba = sma_const[0];
42  
43      for (array::index j = 0; j != 3; ++j)
44        for (array::index k = 0; k != 4; ++k)
45          // FAIL! sba cannot be assigned to.
46          sba[j][k] = num++;
47  
48    return boost::report_errors();
49  }
50