Skip to content

Commit

Permalink
Add copy constructor for dynamic_format_arg_store, and test
Browse files Browse the repository at this point in the history
  • Loading branch information
spyridon97 committed Jul 22, 2021
1 parent 5618346 commit 55d3c48
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
12 changes: 12 additions & 0 deletions include/fmt/args.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,18 @@ class dynamic_format_arg_store
}

public:
constexpr dynamic_format_arg_store() = default;

constexpr dynamic_format_arg_store(
const dynamic_format_arg_store<Context>& store)
:
#if FMT_GCC_VERSION && FMT_GCC_VERSION < 409
basic_format_args<Context>(),
#endif
data_(store.data_),
named_info_(store.named_info_) {
}

/**
\rst
Adds an argument into the dynamic store for later passing to a formatting
Expand Down
13 changes: 13 additions & 0 deletions test/args-test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,16 @@ TEST(args_test, throw_on_copy) {
}
EXPECT_EQ(fmt::vformat("{}", store), "foo");
}

TEST(args_test, copy_constructor) {
auto store = fmt::dynamic_format_arg_store<fmt::format_context>();
store.push_back(fmt::arg("test1", "value1"));
store.push_back(fmt::arg("test2", "value2"));
store.push_back(fmt::arg("test3", "value3"));

auto store2 = store;
store2.push_back(fmt::arg("test4", "value4"));

auto result = fmt::vformat("{test1} {test2} {test3} {test4}", store2);
EXPECT_EQ(result, "value1 value2 value3 value4");
}

0 comments on commit 55d3c48

Please sign in to comment.