Ho appena visto this really nice talkRock Hard: C++ Evolvente di Boris Jabes. Nella sezione del discorso riguardante di ordine superiore programmazione generica dice che il seguente è un esempio di una funzione che è più generico per quanto riguarda il tipo di ritorno e porta a meno funzione template SovraccarichiUtilizzo illuminante di C++ 11 decltype
template <typename Func>
auto deduce(const Func & f) -> decltype(f())
{..}
Questo tuttavia può essere realizzata utilizzando la sintassi modello di pianura come segue
template <typename Func>
Func deduce(const Func & f)
{..}
quindi credo che l'esempio scelto non significa davvero mostrano il potere unico di decltype
. Qualcuno può dare un esempio di più illuminante dell'uso di decltype
?
No. Il primo esempio significa che '' 'dedurre (f)' '' restituisce il tipo di risultato '' 'di Func'''. Il secondo esempio significa che '' 'deduce (f)' '' restituisce '' 'Func'''. Vedi la differenza? –
Aah, mi dispiace di aver perso l'extra '()' dentro l'argomento di 'decltype'. Errore mio. –