Implement forward

This commit is contained in:
BlackMark 2020-04-14 12:55:53 +02:00
parent 01fad9046e
commit 20f552790f

20
util.hpp Normal file
View File

@ -0,0 +1,20 @@
#pragma once
#include "../type/type.hpp"
namespace util {
template <typename T>
inline constexpr T &&forward(type::remove_reference_t<T> &t) noexcept
{
return static_cast<T &&>(t);
}
template <typename T>
inline constexpr T &&forward(type::remove_reference_t<T> &&t) noexcept
{
static_assert(!type::is_lvalue_reference_v<T>, "Can not forward an rvalue as an lvalue.");
return static_cast<T &&>(t);
}
} // namespace util