mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-21 10:05:32 +00:00
AK: Tweak exchange() implementation
Make it constexpr and do perfect forwarding.
This commit is contained in:
parent
1a7af4d677
commit
a59453d4b7
|
@ -81,14 +81,6 @@ inline T&& move(T& arg)
|
|||
# pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
template<typename T, typename U>
|
||||
inline T exchange(T& a, U&& b)
|
||||
{
|
||||
T tmp = move(a);
|
||||
a = move(b);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
template<typename T, typename U>
|
||||
inline void swap(T& a, U& b)
|
||||
{
|
||||
|
@ -370,6 +362,14 @@ struct MakeUnsigned<unsigned long long> {
|
|||
typedef unsigned long long type;
|
||||
};
|
||||
|
||||
template<typename T, typename U = T>
|
||||
inline constexpr T exchange(T& slot, U&& value)
|
||||
{
|
||||
T old_value = move(slot);
|
||||
slot = forward<U>(value);
|
||||
return old_value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
using AK::ceil_div;
|
||||
|
|
Loading…
Reference in a new issue