Unverified Commit 7812813a authored by lucpelletier's avatar lucpelletier Committed by GitHub

Don't explicitly delete copy ctor of dynamic_format_arg_store (#2664)

* Don't explicitly delete copy ctor of dynamic_format_arg_store

Explicitly deleting the copy ctor causes the move constructor to not be
implicitly generated. This behaviour is different than what was in
v8.0.1 and causes code that relied on the move ctor of
dynamic_format_arg_store to break.

* Add test for dynamic_format_arg_store's move ctor

* include <memory>, don't use make_unique
parent 664cd606
...@@ -145,9 +145,6 @@ class dynamic_format_arg_store ...@@ -145,9 +145,6 @@ class dynamic_format_arg_store
public: public:
constexpr dynamic_format_arg_store() = default; constexpr dynamic_format_arg_store() = default;
constexpr dynamic_format_arg_store(
const dynamic_format_arg_store<Context>& store) = delete;
/** /**
\rst \rst
Adds an argument into the dynamic store for later passing to a formatting Adds an argument into the dynamic store for later passing to a formatting
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include "fmt/args.h" #include "fmt/args.h"
#include <memory>
#include "gtest/gtest.h" #include "gtest/gtest.h"
TEST(args_test, basic) { TEST(args_test, basic) {
...@@ -171,3 +173,21 @@ TEST(args_test, throw_on_copy) { ...@@ -171,3 +173,21 @@ TEST(args_test, throw_on_copy) {
} }
EXPECT_EQ(fmt::vformat("{}", store), "foo"); EXPECT_EQ(fmt::vformat("{}", store), "foo");
} }
TEST(args_test, move_constructor) {
const int test_integer = 42;
const char* const test_c_string = "foo";
std::unique_ptr<fmt::dynamic_format_arg_store<fmt::format_context>>
store_uptr(new fmt::dynamic_format_arg_store<fmt::format_context>());
store_uptr->push_back(test_integer);
store_uptr->push_back(std::string(test_c_string));
store_uptr->push_back(fmt::arg("a1", test_c_string));
fmt::dynamic_format_arg_store<fmt::format_context> moved_store(
std::move(*store_uptr));
store_uptr.reset();
EXPECT_EQ(
fmt::vformat("{} {} {a1}", moved_store),
std::to_string(test_integer) + " " + test_c_string + " " + test_c_string);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment