Quindi, sto seguendo l'esempio del codice da qualche parte in questa pagina web: http://eli.thegreenplace.net/2014/sfinae-and-enable_if/SFINAE: std :: enable_if come argomento di funzione
Ecco quello che ho:
template<typename T>
void fun(const typename std::enable_if_t<std::is_integral<T>::value, T>& val) {
std::cout << "fun<int>";
}
template<typename T>
void fun(const typename std::enable_if_t<std::is_floating_point<T>::value, T>& val) {
std::cout << "fun<float>";
}
int main()
{
fun(4);
fun(4.4);
}
In questo modo Dovrei scrivere:
fun<int>(4);
fun<double>(4.4);
Come evitarlo?
Il compilatore si lamenta di non poter dedurre il parametro T
.
Vedo. Come funzionerebbe in un costruttore che non ha un tipo di ritorno? – DeiDei
@DeiDei vedere l'aggiornamento –
Qual è il significato dell'uso di 'int' come secondo argomento di' std :: enable_if'? È arbitrario? O perché 'int = 0' è sicuro? – Jacob