добавлено. Смотрите примечание в 3.3.1p4).

красном ответе накопирования и замены-идиомы Вот кусок кода, который мне нужно немного помочь:

class dumb_array
{
public:
    // ...
    friend void swap(dumb_array& first, dumb_array& second) // nothrow
    {
        using std::swap; 
        swap(first.mSize, second.mSize); 
        swap(first.mArray, second.mArray);
    }
    // ...
};

и он добавляет записку

Существуют и другие утверждения, что мы должны специализировать std :: swap для нашего типа, обеспечить обмен в классе наряду со свободным обменом функций и т. Д. Но это все не нужно: любое правильное использование swap будет осуществляться через неквалифицированный вызов и наша функция будет найдена через ADL. Одна функция будет делать.

С участиемfriend Я немного в «недружественных» отношениях, должен признать. Итак, мои основные вопросы:

выглядит как бесплатная функция, но это внутри тела класса?почему это неswap статический? Очевидно, он не использует никаких переменных-членов.«Любое правильное использование свопа будет определять своп через ADL»? ADL будет искать пространства имен, верно? Но это также смотрит на классы? Или здесь, гдеfriend приходит в?

Побочные вопросы:

С C ++ 11 я должен отметить мойswapсnoexcept?С С ++ 11 и егоДиапазон-для, я должен местоfriend iter begin() а такжеfriend iter end() так же внутри класса? я думаюfriend здесь не нужно, верно?

Ответы на вопрос(2)

Ваш ответ на вопрос