In the new std::string implementation I'm using the following typedef:
#if __cplusplus < 201103L
typedef iterator __pos_iterator;
#else
typedef const_iterator __pos_iterator;
#endif
This can then be used to avoid littering the rest of the file with
preprocessor
conditionals like:
iterator
#if __cplusplus >= 201103L
erase(const_iterator __first, const_iterator __last) noexcept
#else
erase(iterator __first, iterator __last)
#endif
{
...
}
Is this worth doing in the other containers too?
I'm undecided whether it's clearer to read the preprocessor condition
or a declaration with the non-standard __pos_iterator type, but I
think I'd prefer to use the new type. Any other opinions?