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