GNU g++  v5.2.1
GNU Standard C++
Iterator Tags

These are empty types, used to distinguish different iterators. The distinction is not made by what they contain, but simply by what they are. Different underlying algorithms can then be used based on the different operations supported by different iterator types.