#pragma once // Minimal freestanding replacements for (no stdlib available). template struct remove_reference { using type = T; }; template struct remove_reference { using type = T; }; template struct remove_reference { using type = T; }; template using remove_reference_t = typename remove_reference::type; template inline constexpr bool is_void_v = false; template<> inline constexpr bool is_void_v = true; template constexpr remove_reference_t&& move(T&& value) { return static_cast&&>(value); } template constexpr T&& forward(remove_reference_t& value) { return static_cast(value); } template constexpr T&& forward(remove_reference_t&& value) { return static_cast(value); }