mirror of
https://github.com/fmtlib/fmt.git
synced 2025-04-16 05:42:19 +00:00
Fix compilation error for ranges with ADL begin
/end
(#2807)
* Use `range_begin`/`end` to get formatted range iterators * Add test for adl `begin`/`end` * Apply clang-format * Simplify tests
This commit is contained in:
parent
f6bcb25e16
commit
a8fe8becf4
@ -402,8 +402,8 @@ struct formatter<
|
|||||||
auto out = ctx.out();
|
auto out = ctx.out();
|
||||||
*out++ = prefix;
|
*out++ = prefix;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
auto it = std::begin(range);
|
auto it = detail::range_begin(range);
|
||||||
auto end = std::end(range);
|
auto end = detail::range_end(range);
|
||||||
for (; it != end; ++it) {
|
for (; it != end; ++it) {
|
||||||
if (i > 0) out = detail::write_delimiter(out);
|
if (i > 0) out = detail::write_delimiter(out);
|
||||||
if (custom_specs_) {
|
if (custom_specs_) {
|
||||||
|
@ -65,6 +65,25 @@ TEST(ranges_test, format_set) {
|
|||||||
"{\"one\", \"two\"}");
|
"{\"one\", \"two\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace adl {
|
||||||
|
struct box {
|
||||||
|
int value;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto begin(const box& b) -> const int* {
|
||||||
|
return &b.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto end(const box& b) -> const int* {
|
||||||
|
return &b.value + 1;
|
||||||
|
}
|
||||||
|
} // namespace adl
|
||||||
|
|
||||||
|
TEST(ranges_test, format_adl_begin_end) {
|
||||||
|
auto b = adl::box{42};
|
||||||
|
EXPECT_EQ(fmt::format("{}", b), "[42]");
|
||||||
|
}
|
||||||
|
|
||||||
TEST(ranges_test, format_pair) {
|
TEST(ranges_test, format_pair) {
|
||||||
auto p = std::pair<int, float>(42, 1.5f);
|
auto p = std::pair<int, float>(42, 1.5f);
|
||||||
EXPECT_EQ(fmt::format("{}", p), "(42, 1.5)");
|
EXPECT_EQ(fmt::format("{}", p), "(42, 1.5)");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user