mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 11:37:44 +00:00
AK: Tweak exchange() implementation
Make it constexpr and do perfect forwarding.
This commit is contained in:
parent
1a7af4d677
commit
a59453d4b7
1 changed files with 8 additions and 8 deletions
|
@ -81,14 +81,6 @@ inline T&& move(T& arg)
|
||||||
# pragma clang diagnostic pop
|
# pragma clang diagnostic pop
|
||||||
#endif
|
#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>
|
template<typename T, typename U>
|
||||||
inline void swap(T& a, U& b)
|
inline void swap(T& a, U& b)
|
||||||
{
|
{
|
||||||
|
@ -370,6 +362,14 @@ struct MakeUnsigned<unsigned long long> {
|
||||||
typedef unsigned long long type;
|
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;
|
using AK::ceil_div;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue