diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-14 15:17:18 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-14 15:17:18 +0000 |
commit | 3adc0a9fac76c35061f3b404970e428a81a04a13 (patch) | |
tree | d7823be7ad3e63f6690c637339505180ab033e19 /libstdc++-v3/include | |
parent | 2fcc3fb4dba7b617c41affff75d3ca84bdb3a68f (diff) | |
download | gcc-3adc0a9fac76c35061f3b404970e428a81a04a13.tar.gz |
2013-05-14 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/stl_iterator.h (__normal_iterator<>::_M_const_cast):
Use std::pointer_traits.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198891 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r-- | libstdc++-v3/include/bits/stl_iterator.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h index a2762305109..50b55eb57b4 100644 --- a/libstdc++-v3/include/bits/stl_iterator.h +++ b/libstdc++-v3/include/bits/stl_iterator.h @@ -63,7 +63,7 @@ #include <bits/cpp_type_traits.h> #include <ext/type_traits.h> #include <bits/move.h> -#include <ext/cast.h> +#include <bits/ptr_traits.h> namespace std _GLIBCXX_VISIBILITY(default) { @@ -736,9 +736,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __normal_iterator<typename _Container::pointer, _Container> _M_const_cast() const - { return __normal_iterator<typename _Container::pointer, _Container> - (__gnu_cxx::__const_pointer_cast<typename _Container::pointer> - (_M_current)); } + { +#if __cplusplus >= 201103L + using _PTraits = std::pointer_traits<typename _Container::pointer>; + return __normal_iterator<typename _Container::pointer, _Container> + (_PTraits::pointer_to(const_cast<typename _PTraits::element_type&> + (*_M_current))); +#else + return __normal_iterator<typename _Container::pointer, _Container> + (const_cast<typename _Container::pointer>(_M_current)); +#endif + } // Forward iterator requirements reference |