Allowing formatting non-copyable ranges.
This commit is contained in:
parent
a2c05a10ec
commit
57c8ff9bef
@ -154,8 +154,7 @@ struct has_const_begin_end<
|
||||
template <typename T>
|
||||
struct has_mutable_begin_end<
|
||||
T, void_t<decltype(detail::range_begin(std::declval<T>())),
|
||||
decltype(detail::range_end(std::declval<T>())),
|
||||
enable_if_t<std::is_copy_constructible<T>::value>>>
|
||||
decltype(detail::range_end(std::declval<T>()))>>
|
||||
: std::true_type {};
|
||||
|
||||
template <typename T>
|
||||
|
||||
@ -406,3 +406,16 @@ TEST(ranges_test, range_of_range_of_mixed_const) {
|
||||
TEST(ranges_test, vector_char) {
|
||||
EXPECT_EQ(fmt::format("{}", std::vector<char>{'a', 'b'}), "['a', 'b']");
|
||||
}
|
||||
|
||||
TEST(ranges_test, range_of_noncopyable) {
|
||||
struct V {
|
||||
int i;
|
||||
V(int v) : i(v) { }
|
||||
V(V&&) = default;
|
||||
auto operator=(V&&) -> V& = default;
|
||||
|
||||
auto begin() -> int* { return &i; }
|
||||
auto end() -> int* { return &i + 1; }
|
||||
};
|
||||
EXPECT_EQ(fmt::format("{}", V(1)), "[1]");
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user