Этот механизм обычно используется в шаблонном коде, т.е. template <typename Value> class Foo
.
Теперь вопрос в том, какой обмен использовать. std::swap<Value>
будет работать, но это может быть не идеально. Есть большая вероятность, что для типа Value
лучше перегрузка swap
, но в каком пространстве имен это будет? Это почти наверняка не в std::
(поскольку это незаконно), но вполне вероятно в пространстве имен Value
. Вероятно, но далеко не уверен.
В этом случае swap(myValue, anotherValue)
даст вам «лучший» своп. Аргумент Зависимый поиск найдет любой своп в пространстве имен, откуда взялся Value
. В противном случае вступит в силу директива using
, и std::swap<Value>
будет создан и использован.
В вашем коде mSize
, скорее всего, является целочисленным типом, а mArray
указателем. Ни у одного из них нет ассоциированного пространства имен, и std::swap
в любом случае оптимально для них на 99,9%. Поэтому объявление using std::swap;
здесь кажется бесполезным.