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// assign_to_array.cpp - multi_array should be constructible from any other
15// array type in the library.
16//
17//
18#include "generative_tests.hpp"
19#include <boost/array.hpp>
20#include <boost/multi_array.hpp>
21#include <boost/cstdlib.hpp>
22#include <algorithm>
23#include <iostream>
24
25bool equal(const int& a, const int& b)
26{
27 return a == b;
28}
29
30template <typename ArrayA, typename ArrayB>
31bool equal(const ArrayA& A, const ArrayB& B)
32{
33 typename ArrayA::const_iterator ia;
34 typename ArrayB::const_iterator ib = B.begin();
35 for (ia = A.begin(); ia != A.end(); ++ia, ++ib)
36 if (!::equal(*ia, *ib))
37 return false;
38 return true;
39}
40
41
42template <typename Array>
43void access(Array& A, const mutable_array_tag&) {
44
45 assign(A);
46 access(A,const_array_tag());
47}
48
49template <typename Array>
50void access(Array& A, const const_array_tag&) {
51 typedef boost::multi_array<int,3> array3;
52 array3 acopy(A);
53 BOOST_TEST(::equal(acopy,A));
54 ++tests_run;
55}
56
57
58int main() {
59 return run_generative_tests();
60}
61

source code of boost/libs/multi_array/test/assign_to_array.cpp