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>
|
template <typename T>
|
||||||
struct has_mutable_begin_end<
|
struct has_mutable_begin_end<
|
||||||
T, void_t<decltype(detail::range_begin(std::declval<T>())),
|
T, void_t<decltype(detail::range_begin(std::declval<T>())),
|
||||||
decltype(detail::range_end(std::declval<T>())),
|
decltype(detail::range_end(std::declval<T>()))>>
|
||||||
enable_if_t<std::is_copy_constructible<T>::value>>>
|
|
||||||
: std::true_type {};
|
: std::true_type {};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|||||||
@ -406,3 +406,16 @@ TEST(ranges_test, range_of_range_of_mixed_const) {
|
|||||||
TEST(ranges_test, vector_char) {
|
TEST(ranges_test, vector_char) {
|
||||||
EXPECT_EQ(fmt::format("{}", std::vector<char>{'a', 'b'}), "['a', 'b']");
|
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