This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
19980816
- To: egcs-bugs at cygnus dot com
- Subject: 19980816
- From: Robert Krawitz <rlk at rlk-ppp-1 dot torrent dot com>
- Date: Mon, 17 Aug 1998 21:52:13 -0400
- Cc: smr at torrent dot com, randy at torrent dot com, rlk at rlk-ppp-1 dot torrent dot com
This remains from 1.0.3 and other recent snapshots:
% /u2/egcs/bin/g++ -c foo.C
foo.C: In method `void foo<void *>::apply<void *>(void (*)(void *const &, void *), void *)':
foo.C:43: instantiated from here
foo.C:40: Internal compiler error.
foo.C:40: Please submit a full bug report to `egcs-bugs@cygnus.com'.
----------------------------------------------------------------
template<class T>
class helper0
{
public:
void apply(void (*appfun)(T&, void *), void*);
T content_;
};
template<class T>
void helper0<T>::apply(void (*appfun)(T&, void *), void* data)
{
appfun(content_, data);
}
template<class T>
class helper1
{
public:
T* operator()(int i) { return contents_[i]; }
private:
T* contents_[10];
};
template<class T>
class foo
{
public:
void apply(void (*appfun)(const T&, void *), void *data);
private:
helper1<helper0<T> > contents_;
};
template<class T>
void
foo<T>::apply(void (*appfun)(const T&, void *), void *data)
{
int i;
for (i = 0; i < 10; i++)
contents_(i)->apply((void (*)(T&, void *))appfun, data);
}
template class foo<void *>;
----------------------------------------------------------------
--
Robert Krawitz <rlk@tiac.net> http://www.tiac.net/users/rlk/
Tall Clubs International -- http://www.tall.org/ or 1-888-IM-TALL-2
Member of the League for Programming Freedom -- mail lpf@uunet.uu.net
"Linux doesn't dictate how I work, I dictate how Linux works."
--Eric Crampton