#include #include #include namespace stdlite { template Tp&& _declval() noexcept; struct _cp { template using _f = Tp; }; struct _cpc { template using _f = const Tp; }; struct _cplr { template using _f = Tp&; }; struct _cprr { template using _f = Tp&&; }; struct _cpclr { template using _f = const Tp&; }; struct _cpcrr { template using _f = const Tp&&; }; template extern _cp _cpcvr; template extern _cpc _cpcvr; template extern _cplr _cpcvr; template extern _cprr _cpcvr; template extern _cpclr _cpcvr; template extern _cpcrr _cpcvr; template using _copy_cvref_fn = decltype(_cpcvr); template using _copy_cvref_t = typename _copy_cvref_fn::template _f; template concept _callable = requires(Fun&& _fun, As&&... _as) { ((Fun&&) _fun)((As&&) _as...); }; template concept _nothrow_callable = _callable && requires(Fun&& _fun, As&&... _as) { { ((Fun&&) _fun)((As&&) _as...) } noexcept; }; template concept _decays_to = std::same_as, Up>; template struct _undefined; struct _ignore { _ignore() = default; constexpr _ignore(auto&&...) noexcept { } }; template struct _mtype { using _t = Ty; }; template struct _types; template using _mfirst = Tp; template using _msize_t = char[Np + 1]; template extern const _undefined _v; template inline constexpr std::size_t _v = Ip - 1; template struct _i { template