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;
+}
