diff --git a/package/android/src/main/cpp/WithJNIScope.h b/package/android/src/main/cpp/WithJNIScope.h index 9a56ed61..ba99486d 100644 --- a/package/android/src/main/cpp/WithJNIScope.h +++ b/package/android/src/main/cpp/WithJNIScope.h @@ -11,9 +11,13 @@ namespace facebook { namespace jni { template T WithJNIScope(std::function&& lambda) { - T result; - jni::ThreadScope::WithClassLoader([&result, lambda = std::move(lambda)]() { result = lambda(); }); - return std::move(result); + // std::optional delays default constructor + std::optional result; + jni::ThreadScope::WithClassLoader([&result, lambda = std::move(lambda)]() { + // update the optional value + result.emplace(lambda()); + }); + return std::move(result.value()); } } // namespace jni