Sto aggiornando parte della mia base di codice da C++ 11 a C++ 14. Ho diverse funzioni di utilità matematica che accettano più argomenti di input e restituiscono un singolo valore di tipo std::common_type_t<...>
.È sempre sicuro utilizzare la deduzione di ritorno del tipo di funzione automatica di C++ 14 al posto di std :: common_type?
Sto pensando di sostituire il valore di ritorno esplicito con un semplice auto
. Penso che la deduzione del tipo provi a trovare un tipo comune in questi casi. C'è qualche caso in cui questo non avrebbe funzionato?
E 'sempre sicuro per convertire tutte le occorrenze di std::common_type_T<...>
valori di ritorno con auto
?
funzione Esempio:
template<typename T1, typename T2, typename T3>
std::common_type_t<T1, T2, T3> getClamped(T1 mValue, T2 mMin, T3 mMax)
{
return mValue < mMin ? mMin : (mValue > mMax ? mMax : mValue);
}
No, ma?: Ha un tipo comune. –
Posso chiedere perché si prendono argomenti di tipi diversi per una funzione come questa e non solo un singolo tipo? – mattnewport
@mattnewport: probabilmente perché non può essere dedotto altrimenti. Pensa a 'std :: min (1, 1.)'. In questo caso particolare sarebbe meglio evitare la detrazione su min/max, ma non si applica nel caso generale. –