This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Internal compiler error 390
- To: egcs-bugs at cygnus dot com
- Subject: Internal compiler error 390
- From: Vaughn Cato <vcato at bellsouth dot net>
- Date: Sat, 07 Nov 1998 03:48:36 -0500
Compiler: egcs1.1b (egcs-2.91.57)
Libraries: libstdc++-2.9.0, glibc-2.0.7
Command:
g++ -o itertest itertest.C
Compiler Output:
/usr/include/g++/stl_algo.h: In function `class member_iterator<X
*,int,1> __lower_bound<member_iterator<X *,int,1>, int, ptrdiff_t>(class
member_iterator<X *,int,1>, class member_iterator<X *,int,1>, const int
&, ptrdiff_t *, struct random_access_iterator_tag)':
/usr/include/g++/stl_algo.h:1455: instantiated from here
/usr/include/g++/stl_algo.h:1434: Internal compiler error 390.
/usr/include/g++/stl_algo.h:1434: Please submit a full bug report to
`egcs-bugs@cygnus.com'.
Hardward Inventory:
Main memory size: 47.9375 Mbytes
1 CyrixInstead 586 processor
2 16550A serial ports
1 post-1991 82077 floppy controller
1 1.44M floppy drive
1 vga+ graphics device
5 IDE devices
hda: QUANTUM FIREBALL_TM1280A
hdb: WEARNES CDD-820
hdc: LS-120 COSM 02 UHD Floppy
hdd: FUJITSU MPB3043ATU
hdc: 123264kB
total.
PCI bus devices:
Multimedia video controller: 3Dfx Voodoo (rev 2).
VGA compatible controller: S3 Inc. ViRGE (rev 6).
Bridge: Intel 82371AB PIIX4 ACPI (rev 1).
USB Controller: Intel 82371AB PIIX4 USB (rev 1).
IDE interface: Intel 82371AB PIIX4 IDE (rev 1).
ISA bridge: Intel 82371AB PIIX4 ISA (rev 1).
Host bridge: Intel 82439TX (rev 1).
Source:
#include <vector>
#include <iostream>
#include <algorithm>
struct X {
int key;
float value;
X(int k,float v) : key(k), value(v) { }
};
template <class I,class MT,MT iterator_traits<I>::value_type::*M>
class member_iterator {
public:
typedef member_iterator<I,MT,M> Self;
typedef iterator_traits<I>::iterator_category iterator_category;
typedef MT value_type;
typedef iterator_traits<I>::difference_type difference_type;
typedef MT *pointer;
typedef MT &reference;
private:
I _iter;
public:
member_iterator(const I &iter) : _iter(iter) { }
member_iterator(const Self &other) : _iter(other._iter) { }
MT &operator *() const { return (*_iter).*M; }
Self &operator++() { ++_iter; return *this; }
bool operator==(const Self &other) const { return
_iter==other._iter; }
difference_type operator-(const Self &other) { return
_iter-other._iter; }
};
ostream &operator <<(ostream &os,const X &x)
{
return (os << x.key);
}
int main(int argc,char **argv)
{
vector<X> vect;
vect.push_back(X(10,1));
vect.push_back(X(20,2));
vect.push_back(X(30,3));
vect.push_back(X(40,4));
vect.push_back(X(50,5));
int new_value = 25;
typedef member_iterator<vector<X>::iterator,int,&X::key> KeyIter;
KeyIter pos =
lower_bound(KeyIter(vect.begin()),KeyIter(vect.end()),new_value);
copy(KeyIter(vect.begin()),KeyIter(vect.end()),ostream_iterator<int>(cout,"
"));
cout << endl;
}