STL реализует общую функцию std::swap
для замены двух значений. Его можно представить следующим образом:
template <class T> void swap (T& a, T& b)
{
T c(std::move(a));
a=std::move(b);
b=std::move(c);
}
Однако существует алгоритм замены XOR для замены двух целых чисел (http://en.wikipedia.org/wiki/XOR_swap_algorithm):
void swap_u( size_t& x, size_t& y )
{
x = x^y;
y = x^y;
x = x^y;
}
Мои вопросы:
- Это оптимизация в настоящее время (на
x86
илиarm
)? - Поддерживает ли стандарт С++ такую оптимизацию?
- Существуют ли какие-либо реальные реалии STL в дикой природе, которые имеют
std::swap
специализацию для целых чисел?