E 'certamente non idiomatica , ma potresti essere in grado di utilizzare qualcosa chiamato con nome operatori (vedere questi Q & Come here e here, sviluppato da @Yakk e @KonradRudolph), e scrivere
x <min>= y;
che è reso possibile da sovraccarico operator<
e operator>
, combinato con un intelligente avvolto named_operator
. Il codice completo è dato dal link qui sopra, ma usa il codice come
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);
}
Utilizzando come modello std::min
argomento per il parametro modello F
, sarebbe aggiornare i LHS dell'espressione con il minimo dei sx e dx.
Sì. 'x min = y' è comunemente chiamato * errore di sintassi *. :) –
'if (y
Non puoi inventare nuovi operatori in C++ come questo, quindi l'idioma è ciò che hai scritto: 'x = std :: min (x, y) '. –