// C++模版函数: 按成员变量比较大小
// VC8.0
// 在C++11, 可以用lambda简单解决这个问题,不必使用模版
#include "stdafx.h"
template<typename T, typename M, M T::* const m>
bool CompareMember(const T& t1, const T& t2)
{
return t1.*m < t2.*m;
}
struct A
{
int x;
int y;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a,b;
a.x = 100;
a.y = 200;
b.x = 200;
b.y = 100;
bool c1 = CompareMember<A, int, &A::x>(a, b);
bool c2 = CompareMember<A, int, &A::y>(a, b);
return 0;
}