forward 728 B

12345678910111213141516171819202122232425262728293031323334
  1. #ifndef __GBLIBCPP_BITS_FORWARD__
  2. #define __GBLIBCPP_BITS_FORWARD__
  3. #include <bits/type_traits/remove_add>
  4. namespace std {
  5. template <typename T>
  6. constexpr std::remove_reference_t<T>&& move(T&& val) noexcept
  7. {
  8. return static_cast<std::remove_reference_t<T>&&>(val);
  9. }
  10. template <typename T>
  11. constexpr T&& forward(std::remove_reference_t<T>& val) noexcept
  12. {
  13. return static_cast<T&&>(val);
  14. }
  15. template <typename T>
  16. constexpr T&& forward(std::remove_reference_t<T>&& val) noexcept
  17. {
  18. return static_cast<T&&>(val);
  19. }
  20. template <typename T>
  21. add_rvalue_reference_t<T> declval(void) noexcept
  22. {
  23. static_assert(__helpers::template_false_type<T>::value,
  24. "declval cannot be evaluated.");
  25. }
  26. } // namespace std
  27. #endif