// { dg-do assemble } // // Copyright (C) 2001 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 25 Jul 2001 // Origin: gustavo@geneura.ugr.es // Bug 3624. Template instantiation of a reference type was not // converted from reference when doing a call. #include using namespace std; template class eo: public A { public: eo() { cout << this->x << " " << this->y << " " << c(*this) << " " << ((d)?"true":"false") << endl; } private: B b; }; struct XY { float x, y; XY(): x(1), y(0.1) {} }; float fitness(const XY& a) { return a.x + a.y; } struct fitness2 { float operator()(const XY& a) { return a.x - a.y; } float f(const XY& a) { return a.x - a.y; } }; struct fitness3 { float operator()(const XY& a) { return a.x / a.y; } }; fitness2 f2; fitness3 f3; int main() { eo eo2; eo eo3; return 0; }