From 49525c762c9bb922808cb334fe181a690ec8811d Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 4 May 2006 09:37:56 +0000 Subject: [PATCH] re PR libstdc++/27404 (Rope iterators are not InputIterators) 2006-05-04 Douglas Gregor PR libstdc++/27404 * include/ext/rope (_Rope_const_iterator<>::operator*() const, _Rope_iterator<>::operator*() const): Add. From-SVN: r113519 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/include/ext/rope | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2c03608cc64..003e8ef165c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2006-05-04 Douglas Gregor + + PR libstdc++/27404 + * include/ext/rope (_Rope_const_iterator<>::operator*() const, + _Rope_iterator<>::operator*() const): Add. + 2006-05-01 Paolo Carlini * acinclude.m4 (GLIBCXX_ENABLE_WCHAR_T): Always check the diff --git a/libstdc++-v3/include/ext/rope b/libstdc++-v3/include/ext/rope index 35be37687a5..63e9fe9661f 100644 --- a/libstdc++-v3/include/ext/rope +++ b/libstdc++-v3/include/ext/rope @@ -1153,7 +1153,15 @@ protected: _S_setcache(*this); return *this->_M_buf_ptr; } - + + // Without this const version, Rope iterators do not meet the + // requirements of an Input Iterator. + reference + operator*() const + { + return *const_cast<_Rope_const_iterator&>(*this); + } + _Rope_const_iterator& operator++() { @@ -1336,6 +1344,13 @@ protected: *this->_M_buf_ptr); } + // See above comment. + reference + operator*() const + { + return *const_cast<_Rope_iterator&>(*this); + } + _Rope_iterator& operator++() {