7 #ifndef PXR_BASE_TF_TRY_INVOKE_H
8 #define PXR_BASE_TF_TRY_INVOKE_H
16 #include <type_traits>
28 if constexpr (std::is_void_v<Ret>) {
31 return std::optional<Ret>{};
66 template <
class Ret,
class Fn,
class... Args>
70 if constexpr (std::is_invocable_v<Fn, Args...>) {
71 if constexpr (std::is_void_v<Ret>) {
75 return std::optional<Ret>(
79 return TfNotInvoked<Ret>();
83 #endif // PXR_BASE_TF_TRY_INVOKE_H
auto TfTryInvoke(Fn &&fn, Args &&...args)
constexpr auto TfNotInvoked()
**If you just want to fire and args
int invoke(const Func &taskFunc1, Rest...taskFuncN)