diff options
author | Mathias Stearn <redbeard0531@gmail.com> | 2022-04-01 16:40:47 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-01 18:35:26 +0000 |
commit | 0154bdd8eb6a0bb381d4bfdd186ba03b471c82ee (patch) | |
tree | 8a7669290ee99c37977fe30d28a0ee37741cd83c | |
parent | c32836e8fb5e71cb334c7517aeeabe5a9bda971a (diff) | |
download | mongo-0154bdd8eb6a0bb381d4bfdd186ba03b471c82ee.tar.gz |
SERVER-63476 Remove extra ellipsis in function_ref impl
-rw-r--r-- | src/mongo/util/functional.h | 4 | ||||
-rw-r--r-- | src/mongo/util/functional_test.cpp | 24 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/mongo/util/functional.h b/src/mongo/util/functional.h index 0a9d5d4024d..9f353343b69 100644 --- a/src/mongo/util/functional.h +++ b/src/mongo/util/functional.h @@ -94,9 +94,9 @@ public: if constexpr (std::is_void_v<RetType>) { // Implicitly ignore the return. This avoids issues if func() returns a value, // while ensuring we still get a warning if the value is [[nodiscard]]. - (*func)(std::forward<Args...>(args)...); + (*func)(std::forward<Args>(args)...); } else { - return (*func)(std::forward<Args...>(args)...); + return (*func)(std::forward<Args>(args)...); } }; } diff --git a/src/mongo/util/functional_test.cpp b/src/mongo/util/functional_test.cpp index 5953e34a080..eaf43122b0f 100644 --- a/src/mongo/util/functional_test.cpp +++ b/src/mongo/util/functional_test.cpp @@ -186,6 +186,30 @@ TEST(FunctionRefTest, returns_value) { ASSERT_EQ(mongo::function_ref<int()>([] { return 42; })(), 42); } +TEST(UniqueFunctionTest, takes_arguments) { + RunDetection<0> runDetection; + + mongo::unique_function<void(int, int)>([](int a, int b) { + ASSERT_EQ(a, 1); + ASSERT_EQ(b, 2); + RunDetection<0>::itRan = true; + })(1, 2); + + ASSERT_TRUE(runDetection.itRan); +} + +TEST(FunctionRefTest, takes_arguments) { + RunDetection<0> runDetection; + + mongo::function_ref<void(int, int)>([](int a, int b) { + ASSERT_EQ(a, 1); + ASSERT_EQ(b, 2); + RunDetection<0>::itRan = true; + })(1, 2); + + ASSERT_TRUE(runDetection.itRan); +} + TEST(UniqueFunctionTest, returns_reference) { struct Immobile { Immobile() = default; |