Возможный дубликат:
как обеспечить функцию свопинга для моего класса?
Есть несколько вопросов по этому поводу, но есть много противоречий (человек, дающий решение A 'со многими процентами с человеком B, говорящим UB) или "работает только, если компилятор поддерживает ADL".
Итак, скажем, у меня есть следующий шаблон (контейнер):
template<typename T>
class C {
// ...
void swap(C<T>& y) throw(); // C x; x.swap(y);
}
то каков правильный способ убедиться, что этот (пример) код работает:
C<int> x, y;
std::swap(x, y);
Пожалуйста, дайте свой ответ для С++ 03, и если он все еще работает на С++ 0x, еще лучше!