Index: include/list =================================================================== --- include/list +++ include/list @@ -205,7 +205,8 @@ _LIBCPP_INLINE_VISIBILITY pointer __self() { - return static_cast(pointer_traits<__base_pointer>::pointer_to(*this)); + return static_cast(static_cast<_VoidPtr>( + pointer_traits<__base_pointer>::pointer_to(*this))); } }; @@ -543,22 +544,18 @@ iterator end() _NOEXCEPT { #if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__end_)), this); + return iterator(__end_.__self(), this); #else - return iterator(static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__end_))); + return iterator(__end_.__self()); #endif } _LIBCPP_INLINE_VISIBILITY const_iterator end() const _NOEXCEPT { #if _LIBCPP_DEBUG_LEVEL >= 2 - return const_iterator(static_cast<__node_const_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(const_cast<__node_base&>(__end_))), this); + return const_iterator(const_cast<__node_base&>(__end_).__self(), this); #else - return const_iterator(static_cast<__node_const_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(const_cast<__node_base&>(__end_)))); + return const_iterator(const_cast<__node_base&>(__end_).__self()); #endif }