Uaktualniam część mojej bazy z C++ 11 na C++ 14. Mam kilka funkcji narzędzia matematycznego, które pobierają wiele argumentów wejściowych i zwracają pojedynczą wartość typu std::common_type_t<...>
.Czy zawsze bezpieczne jest korzystanie z dedukcji zwrotu funkcji automatycznych C++ 14 w miejsce std :: typ_typowy?
Zastanawiam się nad zastąpieniem jawnej wartości zwracanej prostym auto
. Wydaje mi się, że w tych przypadkach odliczenie typu próbuje znaleźć typowy typ. Czy jest jakiś przypadek, w którym to nie zadziała?
Czy jest zawsze bezpieczne konwertować wszystkie wystąpienia std::common_type_T<...>
zwracanych wartości z auto
?
przykład funkcja:
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);
}
Nie, ale?: Ma wspólny typ. –
Czy mogę zapytać, dlaczego bierzesz argumenty różnych typów dla takiej funkcji, a nie tylko jednego typu? – mattnewport
@mattnewport: Prawdopodobnie dlatego, że nie można tego inaczej wydedukować. Pomyśl 'std :: min (1, 1.)'. W tym konkretnym przypadku lepiej byłoby zapobiec odliczeniu na min/max, ale nie ma to zastosowania w przypadku ogólnym. –