что означает `using std :: swap` внутри тела реализации метода класса?

Я пытался выучить и принять идиому копирования-обмена после подробного объяснения этого вопроса: Идиома копирования-обмена .

Но я нашел кое-что код, который я никогда не видел: using std :: swap; // разрешить ADL в этом примере

class dumb_array
{
public:
    // ...

    void swap(dumb_array& pOther) // nothrow
    {
        using std::swap; // allow ADL    /* <===== THE LINE I DONT UNDERSTAND */

        swap(mSize, pOther.mSize); // with the internal members swapped,
        swap(mArray, pOther.mArray); // *this and pOther are effectively swapped
    }
};
  1. что делает using std :: swap; означает внутри тела реализации функции?
  2. что означает ADL?

26
задан Stephane Rolland 30 May 2019 в 23:19
поделиться