8namespace opcua::detail {
22struct ResultType<BadResult> {
30template <
typename F,
typename... Args>
31auto tryInvoke(F&& func, Args&&... args)
noexcept ->
32 typename ResultType<std::invoke_result_t<F, Args...>>::Type {
33 using ReturnType = std::invoke_result_t<F, Args...>;
35 if constexpr (std::is_void_v<ReturnType>) {
36 std::invoke(std::forward<F>(func), std::forward<Args>(args)...);
39 return std::invoke(std::forward<F>(func), std::forward<Args>(args)...);
42 return BadResult(getStatusCode(std::current_exception()));
The template class Result encapsulates a StatusCode and optionally a value.