Compare commits

..

1 Commits

Author SHA1 Message Date
Vladimir Prus ed7eb32612 Create branch to keep WIP patch for modular build.
[SVN r85883]
2013-09-25 08:12:19 +00:00
6 changed files with 25 additions and 40 deletions
-14
View File
@@ -1,19 +1,5 @@
#~ Copyright Marshall Clow 2013
#~ Distributed under 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)
using boostbook ;
boostbook standalone
: array.xml
: <xsl:param>boost.root=../../../.. ;
###############################################################################
alias boostdoc
: array.xml
:
:
: ;
explicit boostdoc ;
alias boostrelease ;
explicit boostrelease ;
+1 -1
View File
@@ -77,7 +77,7 @@
<para>Note that this class is suggested to be part of the next
Technical Report, which will extend the C++ Standard (see
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1548.htm">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1548.htm</ulink>).</para>
<ulink url="http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm">http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm</ulink>).</para>
<para>Update: <code>std::array</code> is (as of C++11) part of the C++ standard.
The differences between <code>boost::array</code> and <code>std::array</code> are minimal.
+18 -4
View File
@@ -49,6 +49,7 @@
// Handles broken standard libraries better than <iterator>
#include <boost/detail/iterator.hpp>
#include <boost/throw_exception.hpp>
#include <boost/functional/hash_fwd.hpp>
#include <algorithm>
// FIXES for broken compilers
@@ -82,9 +83,15 @@ namespace boost {
const_iterator cend() const { return elems+N; }
// reverse iterator support
#if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
// workaround for broken reverse_iterator in VC7
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
reference, iterator, reference> > reverse_iterator;
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
const_reference, iterator, reference> > const_reverse_iterator;
#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
typedef std::reverse_iterator<iterator, std::random_access_iterator_tag,
value_type, reference, iterator, difference_type> reverse_iterator;
@@ -188,6 +195,7 @@ namespace boost {
};
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
template< class T >
class array< T, 0 > {
@@ -211,9 +219,15 @@ namespace boost {
const_iterator cend() const { return cbegin(); }
// reverse iterator support
#if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
// workaround for broken reverse_iterator in VC7
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
reference, iterator, reference> > reverse_iterator;
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
const_reference, iterator, reference> > const_reverse_iterator;
#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
typedef std::reverse_iterator<iterator, std::random_access_iterator_tag,
value_type, reference, iterator, difference_type> reverse_iterator;
@@ -318,6 +332,7 @@ namespace boost {
#endif
}
};
#endif
// comparisons
template<class T, std::size_t N>
@@ -373,7 +388,7 @@ namespace boost {
// Specific for boost::array: simply returns its elems data member.
template <typename T, std::size_t N>
typename detail::c_array<T,N>::type const& get_c_array(const boost::array<T,N>& arg)
typename const detail::c_array<T,N>::type& get_c_array(const boost::array<T,N>& arg)
{
return arg.elems;
}
@@ -411,7 +426,6 @@ namespace boost {
}
#endif
template <class It> std::size_t hash_range(It, It);
template<class T, std::size_t N>
std::size_t hash_value(const array<T,N>& arr)
-17
View File
@@ -1,17 +0,0 @@
{
"key": "array",
"name": "Array",
"authors": [
"Nicolai Josuttis"
],
"description": "STL compliant container wrapper for arrays of constant size.",
"std": [
"tr1"
],
"category": [
"Containers"
],
"maintainers": [
"Marshall Clow <marshall -at- idio.com>"
]
}
+3 -2
View File
@@ -32,11 +32,12 @@ BOOST_AUTO_TEST_CASE( test_main )
constexpr int three = arr.at (3);
int whatever [ arr.at(4) ];
(void)three;
(void) whatever;
(void) whatever;
}
#else // no constexpr means no constexpr tests!
#else // no constexpr means no constexpr tests!
BOOST_AUTO_TEST_CASE( test_main )
{
}
#endif
+3 -2
View File
@@ -29,7 +29,7 @@ namespace {
typedef T arr[5];
test_type test_case; // = { 1, 1, 2, 3, 5 };
T &aRef = std::get<5> ( test_case ); // should fail to compile
T &aRef = std::get<5> ( test_case ); // should fail to compile
BOOST_CHECK ( &*test_case.begin () == &aRef );
}
#endif
@@ -44,6 +44,7 @@ BOOST_AUTO_TEST_CASE( test_main )
RunStdTests< long double >();
RunStdTests< std::string >();
#else
BOOST_STATIC_ASSERT ( false ); // fail on C++03 systems.
BOOST_STATIC_ASSERT ( false ); // fail on C++03 systems.
#endif
}