diff options
Diffstat (limited to 'gcc-4.9/libstdc++-v3/include/std/array')
-rw-r--r-- | gcc-4.9/libstdc++-v3/include/std/array | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/gcc-4.9/libstdc++-v3/include/std/array b/gcc-4.9/libstdc++-v3/include/std/array index 67680d6..b7abeb0 100644 --- a/gcc-4.9/libstdc++-v3/include/std/array +++ b/gcc-4.9/libstdc++-v3/include/std/array @@ -48,9 +48,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { typedef _Tp _Type[_Nm]; - static constexpr _Tp& - _S_ref(const _Type& __t, std::size_t __n) noexcept - { return const_cast<_Tp&>(__t[__n]); } + static constexpr _Tp* + _S_ptr(const _Type& __t, std::size_t __n) noexcept + { return const_cast<_Tp*>(std::__addressof(__t[__n])); } }; template<typename _Tp> @@ -58,9 +58,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { struct _Type { }; - static constexpr _Tp& - _S_ref(const _Type&, std::size_t) noexcept - { return *static_cast<_Tp*>(nullptr); } + static constexpr _Tp* + _S_ptr(const _Type&, std::size_t) noexcept + { return static_cast<_Tp*>(nullptr); } }; /** @@ -170,11 +170,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER // Element access. reference operator[](size_type __n) noexcept - { return _AT_Type::_S_ref(_M_elems, __n); } + { return *_AT_Type::_S_ptr(_M_elems, __n); } constexpr const_reference operator[](size_type __n) const noexcept - { return _AT_Type::_S_ref(_M_elems, __n); } + { return *_AT_Type::_S_ptr(_M_elems, __n); } reference at(size_type __n) @@ -183,7 +183,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " ">= _Nm (which is %zu)"), __n, _Nm); - return _AT_Type::_S_ref(_M_elems, __n); + return *_AT_Type::_S_ptr(_M_elems, __n); } constexpr const_reference @@ -191,11 +191,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { // Result of conditional expression must be an lvalue so use // boolean ? lvalue : (throw-expr, lvalue) - return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + return __n < _Nm ? *_AT_Type::_S_ptr(_M_elems, __n) : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " ">= _Nm (which is %zu)"), __n, _Nm), - _AT_Type::_S_ref(_M_elems, 0)); + *_AT_Type::_S_ptr(_M_elems, 0)); } reference @@ -204,7 +204,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER constexpr const_reference front() const noexcept - { return _AT_Type::_S_ref(_M_elems, 0); } + { return *_AT_Type::_S_ptr(_M_elems, 0); } reference back() noexcept @@ -213,17 +213,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER constexpr const_reference back() const noexcept { - return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) - : _AT_Type::_S_ref(_M_elems, 0); + return _Nm ? *_AT_Type::_S_ptr(_M_elems, _Nm - 1) + : *_AT_Type::_S_ptr(_M_elems, 0); } pointer data() noexcept - { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } + { return _AT_Type::_S_ptr(_M_elems, 0); } const_pointer data() const noexcept - { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } + { return _AT_Type::_S_ptr(_M_elems, 0); } }; // Array comparisons. @@ -272,8 +272,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER get(array<_Tp, _Nm>& __arr) noexcept { static_assert(_Int < _Nm, "index is out of bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); + return *_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ptr(__arr._M_elems, _Int); } template<std::size_t _Int, typename _Tp, std::size_t _Nm> @@ -289,8 +289,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER get(const array<_Tp, _Nm>& __arr) noexcept { static_assert(_Int < _Nm, "index is out of bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); + return *_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ptr(__arr._M_elems, _Int); } _GLIBCXX_END_NAMESPACE_CONTAINER |