diff --git a/include/proxy/v4/proxy.h b/include/proxy/v4/proxy.h index 2b26da3..21f9c4c 100644 --- a/include/proxy/v4/proxy.h +++ b/include/proxy/v4/proxy.h @@ -2131,119 +2131,412 @@ using facade_builder = details::invalid_cl, details::invalid_cl>; // ============================================================================= -// == Skill Extensions (skills::rtti, skills::format, etc.) == +// == Dispatch Extensions (operator_dispatch, weak_dispatch, etc.) == // ============================================================================= -#if __cpp_rtti >= 199711L -class bad_proxy_cast : public std::bad_cast { -public: - char const* what() const noexcept override { - return "pro::v4::bad_proxy_cast"; +namespace details { + +template +struct sign { + consteval sign(const char (&str)[N + 1]) { + if (str[N] != '\0') { + PROD_UNREACHABLE(); + } + for (std::size_t i = 0; i < N; ++i) { + value[i] = str[i]; + } } -}; -#endif // __cpp_rtti >= 199711L -namespace details { + char value[N]; +}; +template +sign(const char (&str)[N]) -> sign; -template