Robert Krt said:
[...]
A simple example:
#include <map>
using namespace std;
template <class T> class AsMap : public map< unsigned long, T>
{
public:
AsMap(void);
~AsMap(void);
int SaveMap(void);
};
template <class T>
AsMap<T>::AsMap(void)
{}
template <class T>
AsMap<T>::~AsMap(void)
{}
template <class T>
AsMap<T>::SaveMap(void) /*forget int in front and an ICE rise: int
AsMap<T>::SaveMap(void)*/
{
printf("I'm wrong!");
}
int _tmain(int argc, _TCHAR* argv[])
{
AsMap<int> aMap;
return 0;
}
This code compiled well in previous releases. I've forgot the specifier
"int" but ICE points to a constructor of a class that has nothing to do with
the upper one. It took me some time to find it.
Once you have it down to such a small
repro case, you could try Comeau (at
www.comeaucomputing.com/tryitout). Its
error messages usually are very good:
Comeau C/C++ 4.3.3 (Aug 6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
Copyright 1988-2003 Comeau Computing. All rights reserved.
MODE:strict errors C++
"ComeauTest.c", line 19: error: omission of explicit type is nonstandard ("int"
assumed)
AsMap<T>::SaveMap(void) /*forget int in front and an ICE rise: int
^
"ComeauTest.c", line 23: warning: missing return statement at end of non-void
function "AsMap<T>::SaveMap"
}
^
"ComeauTest.c", line 25: error: identifier "_TCHAR" is undefined
int _tmain(int argc, _TCHAR* argv[])
^
2 errors detected in the compilation of "ComeauTest.c".
(However, once one got it down to such a
small piece of code, one usually has found
out what's wrong anyway...)
Schobi
--
(e-mail address removed) is never read
I'm Schobi at suespammers dot org
"Sometimes compilers are so much more reasonable than people."
Scott Meyers