rearrange folly::Function so that its template arguments are deducable.
[folly.git] / folly / test / FunctionTest.cpp
index 7c5159c9ae0873f28ac1b8e5dd209fefbbb435a6..3f1385160f3b1118eee2b35916dcaa9226d58d02 100644 (file)
@@ -49,6 +49,10 @@ struct Functor {
     return oldvalue;
   }
 };
+
+template <typename Ret, typename... Args>
+void deduceArgs(Function<Ret(Args...)>) {}
+
 } // namespace
 
 // TEST =====================================================================
@@ -849,3 +853,9 @@ TEST(Function, SelfMoveAssign) {
   f = std::move(g);
   EXPECT_TRUE(f);
 }
+
+TEST(Function, DeducableArguments) {
+  deduceArgs(Function<void()>{[] {}});
+  deduceArgs(Function<void(int, float)>{[](int, float) {}});
+  deduceArgs(Function<int(int, float)>{[](int i, float) { return i; }});
+}