Это, конечно, не идиоматическое , но вы могли бы использовать что-то, называемое с именами операторов (см этих Q & Как here и here, разработанных @Yakk и @KonradRudolph), и писать
x <min>= y;
что становится возможным путем перегрузки operator<
и operator>
, в сочетании с умным завернутыми named_operator
. Полный код дается по ссылке выше, но использует код, как
template <typename T1, typename T2, typename F>
inline auto operator >(named_operator_lhs<T1, F> const& lhs, T2 const& rhs)
-> decltype(lhs.f(std::declval<T1>(), std::declval<T2>()))
{
return lhs.f(lhs.value, rhs);
}
Использование std::min
в качестве аргумента шаблона для параметра шаблона F
, обновит LHS из выражения с мин в левой и правой частях.
Да. 'x min = y' обычно называют синтаксической ошибкой *. :) –
'if (y
Вы не можете придумывать новые операторы на C++, так что идиома - это то, что вы написали: 'x = std :: min (x, y) '. –