10using i8 = std::int8_t;
11using i16 = std::int16_t;
12using i32 = std::int32_t;
13using i64 = std::int64_t;
15using u8 = std::uint8_t;
16using u16 = std::uint16_t;
17using u32 = std::uint32_t;
18using u64 = std::uint64_t;
20using idx = std::ptrdiff_t;
21using usize = std::size_t;
22using isize = std::ptrdiff_t;
23using byte = std::byte;
25using const_voidp =
const void*;
27template<
typename T,
typename D = std::default_delete<T>>
28using up = std::unique_ptr<T, D>;
38 template <
class... Args>
39 decltype(
auto)
operator()(Args&&... args)
const {
41 return f(*
this, std::forward<Args>(args)...);
46y_combinator(F) -> y_combinator<F>;