C'è un modo per dire se una funzione restituisce un valore const o un valore non const? decltype
funziona per i riferimenti, ma non funzionerà con i tipi non di riferimento.Deducing constness del tipo restituito dalla funzione
#include <type_traits>
template<typename>
struct print_type; //undefined
int main(){
auto lambda = []()->const int{ return 0; };
print_type< decltype(lambda()) > dt; //print_type<int>
print_type< typename std::result_of<decltype(lambda)()>::type > ro;
//print_type<int>
return 0;
}
ho implementato un std::tuple
funzione, che chiamerà un oggetto funzione su ogni elemento tupla e memorizzare il risultato in una nuova tuple
composto tipi restituiti trasformazione. Questo non funziona per i tipi di ritorno const, che è piuttosto sorprendente (ma necessario).
'dicembre ltype' non manterrà il 'const'-ness di un valore di ritorno (come hai notato). http://stackoverflow.com/questions/18502188/why-does-decltype-remove-const-from-return-types-for-built-in-types – CoryKramer
Per i tipi non-class, non-array, no, non c'è È un modo (che io sappia, posso sempre dare speranza). Per i tipi di classe è banale. Nel tuo esempio 'int' non è ovviamente né un tipo di classe, né un tipo di array. – WhozCraig