banan-os/BAN/include/BAN/Move.h

32 lines
606 B
C
Raw Normal View History

#pragma once
#include <BAN/Traits.h>
#include <stddef.h>
namespace BAN
{
2023-01-17 11:15:57 +02:00
template<typename T>
constexpr remove_reference_t<T>&& move(T&& arg)
2023-01-17 11:15:57 +02:00
{
return static_cast<remove_reference_t<T>&&>(arg);
2023-01-17 11:15:57 +02:00
}
template<typename T>
constexpr T&& forward(remove_reference_t<T>& arg)
2023-01-17 11:15:57 +02:00
{
return static_cast<T&&>(arg);
}
template<typename T>
constexpr T&& forward(remove_reference_t<T>&& arg)
2023-01-17 11:15:57 +02:00
{
static_assert(!is_lvalue_reference_v<T>);
2023-01-17 11:15:57 +02:00
return static_cast<T&&>(arg);
}
}
inline void* operator new(size_t, void* addr) { return addr; }
inline void* operator new[](size_t, void* addr) { return addr; }