Apparent template instantiation error in egcs 1.1.1
Gisli Ottarsson
gisli@master.adams.com
Thu Feb 18 13:34:00 GMT 1999
Version: egcs-2.91.60
Platform: Linux and IRIX64
A simplified version of my program is enclosed. The code compiles
without a hitch on IRIX (MIPSpro Compilers: Version 7.2.1.1m, CC -n32)
and HP (aCC: HP ANSI C++ B3910B A.01.12).
The error message from egcs is:
example.cxx: In method `class ManyColumns TR1::A(const class ManyColumns &) const':
example.cxx:24: no matching function for call to `ManyColumns::transformed_by (const TR1 &, {unknown type}) const'
example.cxx: In method `class ManyColumns TR2::A(const class ManyColumns &) const':
example.cxx:30: no matching function for call to `ManyColumns::transformed_by (const TR2 &, {unknown type}) const'
The code reads as follows:
#include <list.h>
struct Column {
double a;
Column(double b):a(b){}
};
class ManyColumns {
list<Column> as;
public:
template <class T>
ManyColumns transformed_by(const T& transformer, Column (T::* A) (const Column&) const ) const
{
ManyColumns ret;
for(list<Column>::const_iterator i=as.begin(); i!=as.end(); i++)
ret.as.push_back( transformer.A(*i) );
return ret;
}
};
class TR1 {
public:
Column A(const Column& col) const { return 105 * col.a; }
ManyColumns A(const ManyColumns& cols) const { return cols.transformed_by(*this, &TR1::A); }
};
class TR2 {
public:
Column A(const Column& col) const { return 5 * col.a; }
ManyColumns A(const ManyColumns& cols) const { return cols.transformed_by(*this, &TR2::A); }
};
int main()
{
}
More information about the Gcc-bugs
mailing list