добавлено. Смотрите примечание в 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
здесь не нужно, верно?