У меня есть код, как это:станд :: своп не вызывает мое выполнение пользовательских подкачки C++ 11
#include <utility>
#include <iostream>
struct thing {
void swap(thing & other){
std::cout << "swap method" << std::endl;
}
};
void swap(thing & a, thing & b) {
std::cout << "swap function" << std::endl;
a.swap(b);
}
struct another{
thing a;
};
int main(int argc, char** argv){
another a, b;
std::swap(a, b);
}
Если выполняется, он ничего не печатает - например, он не использует мой «пользовательский» swap
.
Я читал, что НЕ должен быть std :: swap специализация.
Нужно ли выполнять обычную своп для класса another
, или мне что-то не хватает?
Как вы ожидаете, что ваш пользовательский 'swap()' будет вызван? Вы сами вызываете 'std :: swap()' в конце концов! – CinCout
хорошо, это именно то, что я точно не понял. , так что мне нужна специальность шаблона в пространстве имен std? – Nick