From 975a4fc1a3818c84aafa85aa49915426305f7ae5 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Thu, 28 Dec 2006 10:54:56 +0000 Subject: [PATCH] array (array<>::_M_at): Remove. 2006-12-28 Paolo Carlini * include/tr1/array (array<>::_M_at): Remove. (array<>::_M_check): Add. (array<>::at): Use the latter. From-SVN: r120242 --- libstdc++-v3/ChangeLog | 6 +++++ libstdc++-v3/include/tr1/array | 43 +++++++++++----------------------- 2 files changed, 20 insertions(+), 29 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4a251af4378..ae6549b045e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2006-12-28 Paolo Carlini + + * include/tr1/array (array<>::_M_at): Remove. + (array<>::_M_check): Add. + (array<>::at): Use the latter. + 2006-12-22 Paolo Carlini DR 541, [WP]. diff --git a/libstdc++-v3/include/tr1/array b/libstdc++-v3/include/tr1/array index 153f334a575..23808b33462 100644 --- a/libstdc++-v3/include/tr1/array +++ b/libstdc++-v3/include/tr1/array @@ -128,11 +128,17 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) reference at(size_type __n) - { return _M_at<_Nm>(__n); } + { + _M_check<_Nm>(__n); + return _M_instance[__n]; + } const_reference at(size_type __n) const - { return _M_at<_Nm>(__n); } + { + _M_check<_Nm>(__n); + return _M_instance[__n]; + } reference front() @@ -160,39 +166,18 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) private: template - typename __gnu_cxx::__enable_if<_Mm, reference>::__type - _M_at(size_type __n) + typename __gnu_cxx::__enable_if<_Mm, void>::__type + _M_check(size_type __n) const { if (__builtin_expect(__n >= _Mm, false)) - std::__throw_out_of_range(__N("array::_M_at")); - return _M_instance[__n]; + std::__throw_out_of_range(__N("array::_M_check")); } // Avoid "unsigned comparison with zero" warnings. template - typename __gnu_cxx::__enable_if::__type - _M_at(size_type) - { - std::__throw_out_of_range(__N("array::_M_at")); - return _M_instance[0]; - } - - template - typename __gnu_cxx::__enable_if<_Mm, const_reference>::__type - _M_at(size_type __n) const - { - if (__builtin_expect(__n >= _Mm, false)) - std::__throw_out_of_range(__N("array::_M_at")); - return _M_instance[__n]; - } - - template - typename __gnu_cxx::__enable_if::__type - _M_at(size_type) const - { - std::__throw_out_of_range(__N("array::_M_at")); - return _M_instance[0]; - } + typename __gnu_cxx::__enable_if::__type + _M_check(size_type) const + { std::__throw_out_of_range(__N("array::_M_check")); } }; // Array comparisons.