Могу ли я специализировать iter_swap для IndirectIterator для создавать стандартные алгоритмы (такие как std::sort) поменять местами элементы по указателю?
т.е., если я напишу следующее, окажет ли это какое-либо влияние на стандартные алгоритмы?
Код: Выделить всё
namespace some_namespace
{
template
class IndirectIterator
{
IterT m_base;
public:
typedef IterT base_iterator;
typedef /* ... */ reference;
/* ... */
reference operator*() const { **m_base; }
const base_iterator& base() const { return m_base; }
base_iterator& base() { return m_base; }
};
template
void iter_swap(IndirectIterator& a, IndirectIterator& b)
{
using std::iter_swap;
iter_swap(a.base(), b.base());
}
}
Подробнее здесь: https://stackoverflow.com/questions/122 ... pecialised
Мобильная версия