There's already a non-copyable range, don't need to add a new one, just need to make that one non-const.

This commit is contained in:
Barry Revzin 2023-01-25 22:22:28 -06:00
parent 57c8ff9bef
commit 154952285f

View File

@ -193,7 +193,7 @@ template <typename T> class noncopyable_range {
std::vector<T> vec;
public:
using const_iterator = typename ::std::vector<T>::const_iterator;
using iterator = typename ::std::vector<T>::iterator;
template <typename... Args>
explicit noncopyable_range(Args&&... args)
@ -202,8 +202,8 @@ template <typename T> class noncopyable_range {
noncopyable_range(noncopyable_range const&) = delete;
noncopyable_range(noncopyable_range&) = delete;
const_iterator begin() const { return vec.begin(); }
const_iterator end() const { return vec.end(); }
iterator begin() { return vec.begin(); }
iterator end() { return vec.end(); }
};
TEST(ranges_test, range) {
@ -406,16 +406,3 @@ 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]");
}