unção de membro de troca de amigo público
Na bela resposta para o idioma da cópia e troca existe um código, preciso de um pouco de ajuda:
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);
}
// ...
};
e ele adiciona uma nota
Há outras alegações de que devemos especializar std :: swap para o nosso tipo, fornecer uma troca dentro da classe ao lado de uma troca de função livre, etc. chamada, e nossa função será encontrada através do ADL. Uma função funcionar
Withfriend
Estou um pouco em termos "hostis", devo admitir. Então, minhas principais perguntas são:
swap
static? Obviamente, ele não usa nenhuma variável de membr "Qualquer uso adequado do swap descobrirá o swap via ADL"? A ADL pesquisará os namespaces, certo? Mas também olha dentro das classes? Ou é aqui ondefriend
entraQuestões paralelas:
om C ++ 11, devo marcar meuswap
s comnoexcept
? Com C ++ 11 e seus intervalo-para, devo colocarfriend iter begin()
efriend iter end()
da mesma maneira dentro da classe? Eu acho que ofriend
não é necessário aqui, certo?