re PR libstdc++/23632 (std::vector<bool> in combination with debug mode fails to compile code)

2005-08-31  Paolo Carlini  <pcarlini@suse.de>
	    Kaspar Fischer <fischerk@inf.ethz.ch>

	PR libstdc++/23632
	* include/bits/stl_bvector.h (_Bit_iterator::operator[],
	_Bit_const_iterator::operator[]): Const-ify.
	* testsuite/23_containers/vector/bool/23632.cc: New.

Co-Authored-By: Kaspar Fischer <fischerk@inf.ethz.ch>

From-SVN: r103686
This commit is contained in:
Paolo Carlini 2005-08-31 17:01:57 +00:00 committed by Paolo Carlini
parent 2efa12b340
commit e6494c9434
3 changed files with 50 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2005-08-31 Paolo Carlini <pcarlini@suse.de>
Kaspar Fischer <fischerk@inf.ethz.ch>
PR libstdc++/23632
* include/bits/stl_bvector.h (_Bit_iterator::operator[],
_Bit_const_iterator::operator[]): Const-ify.
* testsuite/23_containers/vector/bool/23632.cc: New.
2005-08-30 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/23578 (cont)

View File

@ -259,7 +259,7 @@ namespace _GLIBCXX_STD
}
reference
operator[](difference_type __i)
operator[](difference_type __i) const
{ return *(*this + __i); }
};
@ -345,7 +345,7 @@ namespace _GLIBCXX_STD
}
const_reference
operator[](difference_type __i)
operator[](difference_type __i) const
{ return *(*this + __i); }
};

View File

@ -0,0 +1,40 @@
// Copyright (C) 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// { dg-do compile }
#include <vector>
// libstdc++/23632
void test01()
{
std::vector<bool> v(100);
const std::vector<bool>::iterator fu = v.begin();
if (!fu[0])
fu[0] = true;
const std::vector<bool>::const_iterator cfu = v.begin();
if (cfu[0])
;
}
int main()
{
test01();
return 0;
}