Skip to content

Commit 14e15b6

Browse files
committed
ValueIterator operators * and -> need to be const
1 parent 06dee56 commit 14e15b6

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

Diff for: include/json/value.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -918,8 +918,8 @@ class JSON_API ValueIterator : public ValueIteratorBase {
918918
* because the returned references/pointers can be used
919919
* to change state of the base class.
920920
*/
921-
reference operator*() { return deref(); }
922-
pointer operator->() { return &deref(); }
921+
reference operator*() const { return const_cast<reference>(deref()); }
922+
pointer operator->() const { return const_cast<pointer>(&deref()); }
923923
};
924924

925925
inline void swap(Value& a, Value& b) { a.swap(b); }

Diff for: src/test_lib_json/main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3724,7 +3724,7 @@ JSONTEST_FIXTURE_LOCAL(IteratorTest, reverseIterator) {
37243724
using Iter = decltype(json.begin());
37253725
auto re = std::reverse_iterator<Iter>(json.begin());
37263726
for (auto it = std::reverse_iterator<Iter>(json.end()); it != re; ++it) {
3727-
values.push_back((*it).asString());
3727+
values.push_back(it->asString());
37283728
}
37293729
JSONTEST_ASSERT((values == std::vector<std::string>{"b", "a"}));
37303730
}

0 commit comments

Comments
 (0)