В этой части кода взяты из http://drdobbs.com/cpp/184403774:Что делает этот синтаксис operator()?
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_; }
я уверен, что это какой-то differenct синтаксис, так как operator()
должно быть одно слово. Кроме того, вы не можете определить два из них с разными типами возвращаемых данных.
Любая конкретная причина, мы типаж к ссылке? – Lazer
'type operator() const' следует записывать как' operator type() const' – Nawaz
Или 'type operator()() const', если это оператор вызова функции, не принимающий никаких параметров. –