#include <cstddef>
#include <stdexcept>
#include <boost/assert.hpp>
+#include <boost/swap.hpp>
// Handles broken standard libraries better than <iterator>
#include <boost/detail/iterator.hpp>
// swap (note: linear complexity)
void swap (array<T,N>& y) {
- std::swap_ranges(begin(),end(),y.begin());
+ for (size_type i = 0; i < N; ++i)
+ boost::swap(elems[i],y.elems[i]);
}
// direct access to data (read-only)
// check range (may be private because it is static)
static void rangecheck (size_type i) {
if (i >= size()) {
- throw std::range_error("array<>: index out of range");
+ throw std::out_of_range("array<>: index out of range");
}
}
}
// operator[]
- reference operator[](size_type i)
+ reference operator[](size_type /*i*/)
{
return failed_rangecheck();
}
- const_reference operator[](size_type i) const
+ const_reference operator[](size_type /*i*/) const
{
return failed_rangecheck();
}
// at() with range check
- reference at(size_type i) { return failed_rangecheck(); }
- const_reference at(size_type i) const { return failed_rangecheck(); }
+ reference at(size_type /*i*/) { return failed_rangecheck(); }
+ const_reference at(size_type /*i*/) const { return failed_rangecheck(); }
// front() and back()
reference front()
static size_type max_size() { return 0; }
enum { static_size = 0 };
- void swap (array<T,0>& y) {
+ void swap (array<T,0>& /*y*/) {
}
// direct access to data (read-only)
// check range (may be private because it is static)
static reference failed_rangecheck () {
- std::range_error e("attempt to access element of an empty array");
+ std::out_of_range e("attempt to access element of an empty array");
boost::throw_exception(e);
//
// We need to return something here to keep