【发布时间】:2011-11-23 23:06:25
【问题描述】:
我想用boost operators这样的方式生成比较函数:
template <typename T>
class Foo : boost::less_than_comparable<Foo<T>, Foo<T2> > {
private:
int bar;
public:
template <typename T2>
friend bool operator<(Foo<T> const& f1, Foo<T2> const& f2) {
if (typeid(T) == typeid(T2)) {
return f1.bar < f2.bar;
} else {
return sizeof(T) < sizeof(T2);
}
}
};
有可能吗?如果我们可以以某种方式使用 boost 运算符来生成其余的运算符,那么运算符实际上并不需要成为朋友。
【问题讨论】: