В этом куске кода взято из http://drdobbs.com/cpp/184403774:
template <class L, class R>
class MinResult {
L& lhs_;
R& rhs_;
public:
operator L&() { return lhs_ < rhs_ ? lhs_ : rhs_; } // <----
operator R&() { return lhs_ < rhs_ ? lhs_ : rhs_; } // <----
MinResult(L& lhs, R& rhs) : lhs_(lhs), rhs_(rhs) {}
};
Что за код выше пытается сделать в строках, обозначенных стрелками?
Я новичок в C ++, и я понимаю, что мы можем переопределить / определить operator()
, определив его.
Но тогда это не должно быть определено так
L& operator() { return lhs_ < rhs_ ? lhs_ : rhs_; }
Я уверен, что это какой-то другой синтаксис, поскольку operator()
должен быть одним словом. Кроме того, вы не можете определить два из них с разными типами возврата.