Also added a pretty much untested and totally incomplete STL string type.

This commit is contained in:
2024-01-12 01:31:43 +01:00
parent ff3214fa5a
commit 219a48c616
21 changed files with 138 additions and 12 deletions

40
bastl/include/utility Normal file
View File

@@ -0,0 +1,40 @@
#pragma once
#if !defined(BAD_APPLE_OS_UTILITY_INCLUDED)
#define BAD_APPLE_OS_UTILITY_INCLUDED
#include "type_traits"
namespace std
{
template<typename T>
constexpr remove_reference_t<T>&& move(T&& val) noexcept
{
return static_cast<remove_reference_t<T>&&>(val);
}
template<typename T>
constexpr void swap(T& first, T& second)
{
T temp = std::move(first);
first = std::move(second);
second = std::move(temp);
}
template<typename T>
[[nodiscard]] constexpr T&& forward(remove_reference_t<T>& value)
{
return static_cast<T&&>(value);
}
template<typename T, typename U = T>
[[nodiscard]] constexpr T exchange(T& obj, U&& newValue)
{
T oldValue = std::move(obj);
obj = std::forward<U>(newValue);
return oldValue;
}
}
#endif // !defined(BAD_APPLE_OS_UTILITY_INCLUDED)