В стандарте С++ 14 указано следующее объявление для std::exchange
:
template <class T, class U = T>
T std::exchange(T& obj, U&& new_value);
Мне интересно, почему U
по умолчанию имеет значение T
, так как U
можно найти благодаря new_value
. В каком случае это приведет к другому результату, чем:
template <class T, class U>
T std::exchange(T& obj, U&& new_value);