2017-10-06 17 views
0

Ce code ne compile pas (intel icc 15.0.3) avec le message d'erreur explicit type is missing ("int" assumed)Pourquoi ne auto pas être utilisé comme un type de retour pour la déclaration de fonction

auto foo(){ 
    const bool retVal = false; 
    return retVal; 
} 

Il peut être vu facilement, que le retour tapez dans ce cas est bool. Pourquoi ne peut-on pas utiliser auto comme type de retour pour la déclaration de fonction? Cette fonctionnalité prendrait bien en charge le DRY principle.

+10

Essayez C++ 14. Ce qui permet cela. –

+0

La réponse générale à "pourquoi la fonctionnalité X n'existe pas" est: "Personne ne s'est mis à l'implémenter" souvent avec un implicite * * – Caleth

+4

Ou utilisez lambda, ce qui lui permet: 'auto foo = []() { const bool retVal = faux; retour retVal; }; ' –

Répondre

4

Comme commenté par Jon et Ron, en utilisant un compilateur résout ce problème.

En outre, la solution de lambda Aki travaillerait:

auto foo = []() { 
    const bool retVal = false; 
    return retVal; 
}; 
1

Vous pouvez peut utiliser un type de retour de fuite dans 11 C++, si vous voulez faire la façon moderne:

auto foo() -> bool{ 
    const bool retVal = false; 
    return retVal; 
} 

Mais je dois admettre, je préfère utiliser bool foo(){..} pour pré-C++ 14.