Squashed 'third_party/boostorg/multi_array/' content from commit abcb283

Change-Id: I4b93f75f0b15b00216d918bd6db5fc4fcb9c4cc2
git-subtree-dir: third_party/boostorg/multi_array
git-subtree-split: abcb2839d56669d1b5bb8a240ec644f47c66beb2
diff --git a/example/foreach_test.cpp b/example/foreach_test.cpp
new file mode 100644
index 0000000..4330d18
--- /dev/null
+++ b/example/foreach_test.cpp
@@ -0,0 +1,54 @@
+// Copyright 2002 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+//  Boost.MultiArray Library
+//  Authors: Ronald Garcia
+//           Jeremy Siek
+//           Andrew Lumsdaine
+//  See http://www.boost.org/libs/multi_array for documentation.
+
+// foreach_test.cpp
+// Let's see if this stuff works
+
+#include "boost/multi_array.hpp"
+#include "for_each.hpp"
+#include <algorithm>
+
+struct times_five {
+  double operator()(const int& val) { return val*5.0; }
+};
+
+
+int main() {
+
+  typedef boost::multi_array<double,2> array;
+
+  double data[] = {
+    1.0, 2.0, 3.0,
+    4.0, 5.0, 6.0,
+    7.0, 8.0, 9.0
+  };
+  const int data_size=9;
+
+  array A(boost::extents[3][3]);
+  A.assign(data,data+data_size);
+
+#if 0
+  std::copy(A.data(),A.data()+A.num_elements(),
+            std::ostream_iterator<double>(std::cout,","));
+
+  std::cout << "\n";
+#endif
+  for_each(A,times_five());
+
+#if 0  
+  std::copy(A.data(),A.data()+A.num_elements(),
+            std::ostream_iterator<double>(std::cout,","));
+ 
+  std::cout << "\n";
+#endif
+  return 0;
+}