This allows std::__to_address to be used with __normal_iterator in C++11/14/17 modes. Without the partial specialization the deduced pointer_traits::element_type is incorrect, and so the return type of __to_address is wrong. A similar partial specialization is probably needed for __gnu_debug::_Safe_iterator. Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: * include/bits/stl_iterator.h (pointer_traits): Define partial specialization for __normal_iterator. * testsuite/24_iterators/normal_iterator/to_address.cc: New test. Tested x86_64-linux. Committed to trunk.