#include #include #include using namespace std; template T &maxVal(T &a, T &b) { return a > b ? a : b; } class A { private: int x; public: A(int x) : x(x) {} void show() { cout << "x = " << x << endl; } public: // 重载运算符>,解决函数模版的局限性,不用具体化函数模版 bool operator>(const A &a) const { return this->x > a.x; } }; int main() { A a1(20), a2(50); // A &b = maxVal(a1, a2); A &b = maxVal(a1, a2); b.show(); return 0; }