diff --git a/doc/array.xml b/doc/array.xml
index 170aca1..73e185c 100644
--- a/doc/array.xml
+++ b/doc/array.xml
@@ -10,6 +10,9 @@
2001
+ 2002
+ 2003
+ 2004
Nicolai M. Josuttis
@@ -276,6 +279,12 @@
elems
will not throw
+
+
+ T*
+ elems
+ will not throw
+
diff --git a/include/boost/array.hpp b/include/boost/array.hpp
index bab704d..bdae6ba 100644
--- a/include/boost/array.hpp
+++ b/include/boost/array.hpp
@@ -4,6 +4,9 @@
* See
* http://www.josuttis.com/cppcode
* for details and the latest version.
+ * See
+ * http://www.boost.org/libs/array for Documentation.
+ * for documentation.
*
* (C) Copyright Nicolai M. Josuttis 2001.
* Permission to copy, use, modify, sell and distribute this software
@@ -11,14 +14,14 @@
* This software is provided "as is" without express or implied
* warranty, and with no claim as to its suitability for any purpose.
*
+ * 29 Jan 2004 - c_array() added, BOOST_NO_PRIVATE_IN_AGGREGATE removed (Nico Josuttis)
* 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries.
* 05 Aug 2001 - minor update (Nico Josuttis)
* 20 Jan 2001 - STLport fix (Beman Dawes)
* 29 Sep 2000 - Initial Revision (Nico Josuttis)
+ *
+ * Jan 29, 2004
*/
-
-// See http://www.boost.org/libs/array for Documentation.
-
#ifndef BOOST_ARRAY_HPP
#define BOOST_ARRAY_HPP
@@ -32,6 +35,7 @@
// FIXES for broken compilers
#include
+
namespace boost {
template
@@ -105,9 +109,12 @@ namespace boost {
std::swap_ranges(begin(),end(),y.begin());
}
- // direct access to data
+ // direct access to data (read-only)
const T* data() const { return elems; }
+ // use array as C array (direct read/write access to data)
+ T* c_array() { return elems; }
+
// assignment with type conversion
template
array& operator= (const array& rhs) {
@@ -121,12 +128,11 @@ namespace boost {
std::fill_n(begin(),size(),value);
}
-#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE
- private:
-#endif
// check range (may be private because it is static)
static void rangecheck (size_type i) {
- if (i >= size()) { throw std::range_error("array"); }
+ if (i >= size()) {
+ throw std::range_error("array<>: index out of range");
+ }
}
};
@@ -166,10 +172,3 @@ namespace boost {
} /* namespace boost */
#endif /*BOOST_ARRAY_HPP*/
-
-
-
-
-
-
-