28 using InterfacePointers = std::tuple<Interfaces*...>;
30 if constexpr (
sizeof...(Interfaces) > 0)
33 Interfaces::InterfaceID...
37 static_cast<Interfaces*
>(ptr)...
71 out_interface =
reinterpret_cast<T*
>(result.
value());
74 return result.
error();
Definition expected.hxx:16
auto error() const noexcept -> ErrorType
Definition expected.hxx:122
bool succeeded() const noexcept
Definition expected.hxx:112
auto value(this Self &&self) noexcept -> auto &&
Definition expected.hxx:116
Definition interfaces.hxx:16
Definition container_concepts.hxx:12
Definition hashmap_details.hxx:13
auto interface_select_helper(auto *ptr, ice::StringID_Arg id) noexcept -> ice::Expected< void * >
Definition interfaces.hxx:26
SPDX-License-Identifier: MIT.
Definition array.hxx:12
static constexpr ice::ErrorCodeError E_Fail
Definition error_codes.hxx:13
std::remove_pointer_t< std::remove_reference_t< std::remove_cv_t< T > > > clear_type_t
Definition base.hxx:64
std::conditional_t< ice::build::Constant_StringID_DebugInfoEnabled, StringID const &, StringID > StringID_Arg
Argument type used to pass ice::StringID values to functions.
Definition stringid.hxx:23
BaseStringID< ice::build::Constant_StringID_DebugInfoEnabled > StringID
\copy ice::BaseStringID.
Definition stringid.hxx:15
std::uint32_t u32
Definition types.hxx:26
static constexpr ice::ErrorCodeSuccess S_Ok
Definition error_codes.hxx:10
ice::Expected< ice::ErrorCode > Result
Definition expected.hxx:197
Definition interfaces.hxx:89
auto query_interface(ice::StringID_Arg id) noexcept -> ice::Expected< void * > override
Definition interfaces.hxx:90
Definition interfaces.hxx:57
virtual ~InterfaceSelector() noexcept=default
virtual auto query_interface(ice::StringID_Arg id) noexcept -> ice::Expected< void * >
Definition interfaces.hxx:60
auto query_interface(T *&out_interface) noexcept -> ice::Result
Definition interfaces.hxx:66
Definition interfaces.hxx:80
auto query_interface(ice::StringID_Arg id) noexcept -> ice::Expected< void * > override
Definition interfaces.hxx:81