summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Stearn <redbeard0531@gmail.com>2022-04-01 16:40:47 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-01 18:35:26 +0000
commit0154bdd8eb6a0bb381d4bfdd186ba03b471c82ee (patch)
tree8a7669290ee99c37977fe30d28a0ee37741cd83c
parentc32836e8fb5e71cb334c7517aeeabe5a9bda971a (diff)
downloadmongo-0154bdd8eb6a0bb381d4bfdd186ba03b471c82ee.tar.gz
SERVER-63476 Remove extra ellipsis in function_ref impl
-rw-r--r--src/mongo/util/functional.h4
-rw-r--r--src/mongo/util/functional_test.cpp24
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;