allow passing function pointers to Future::onError()
[folly.git] / folly / futures / Future-pre.h
index e3f5021eaf4b86d00b70da6d5e21adb954513e71..bcae5b0819d528245c0f1da99f85e4baa6f539f8 100644 (file)
@@ -119,6 +119,22 @@ struct Extract<R(Class::*)(Args...)> {
   typedef typename ArgType<Args...>::FirstArg FirstArg;
 };
 
+template <typename R, typename... Args>
+struct Extract<R (*)(Args...)> {
+  typedef isFuture<R> ReturnsFuture;
+  typedef Future<typename ReturnsFuture::Inner> Return;
+  typedef typename ReturnsFuture::Inner RawReturn;
+  typedef typename ArgType<Args...>::FirstArg FirstArg;
+};
+
+template <typename R, typename... Args>
+struct Extract<R (&)(Args...)> {
+  typedef isFuture<R> ReturnsFuture;
+  typedef Future<typename ReturnsFuture::Inner> Return;
+  typedef typename ReturnsFuture::Inner RawReturn;
+  typedef typename ArgType<Args...>::FirstArg FirstArg;
+};
+
 // gcc-4.8 refuses to capture a function reference in a lambda. This can be
 // mitigated by casting them to function pointer types first. The following
 // helper is used in Future.h to achieve that where necessary.