Funzione che restituisce diverse tuple [chiuso]

0

Sto cercando di imparare le nuove funzionalità di C ++ 11/14 e sto giocando con tuple e variadic. Mi chiedo se sia possibile utilizzare le tuple per restituire più valori che non sono corretti al momento della compilazione.

Qualcosa come (codice non funzionante):

template <typename... Ts>
std::tuple<Ts...> get(bool f) {
    if(f)
        return std::make_tuple("Hello", 1, 4.2);
    else
        return std::make_tuple(3.3, 'i');
}

Ho letto anche la deduzione del rendimento auto , ma può essere utilizzata solo quando tutti return hanno lo stesso tipo.

    
posta Marco Stramezzi 04.10.2017 - 14:49
fonte

1 risposta

4

La risposta breve è che no non lo è. Il compilatore può fare qualche tipo di deduzione per capire il tipo restituito senza specificarlo esplicitamente (almeno in alcuni casi), ma in ogni caso il tipo stesso deve essere corretto in fase di compilazione.

In teoria, potresti (ad esempio) restituire qualcosa come std::vector<boost::any> per consentire di restituire un numero arbitrario di tipi arbitrari. Vorrei tuttavia notare che questo è probabilmente più un problema che una soluzione. Per essere utile, quasi sempre vuoi mettere vincoli più stretti di quello.

    
risposta data 05.10.2017 - 19:19
fonte

Leggi altre domande sui tag