summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-14 15:17:18 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-14 15:17:18 +0000
commit3adc0a9fac76c35061f3b404970e428a81a04a13 (patch)
treed7823be7ad3e63f6690c637339505180ab033e19 /libstdc++-v3/include
parent2fcc3fb4dba7b617c41affff75d3ca84bdb3a68f (diff)
downloadgcc-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.h16
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