2016-03-24 2 views
1

J'ai une variable x, a déclaré que:typeof (x) en tant qu'argument de modèle?

auto x = f(y); 

f est une fonction et y une variable, à la fois défini ailleurs. Maintenant, je voudrais déclarer un std::vector détenant des éléments du type de x, donc j'écrire:

std::vector<typeof(x)> v; 

Il en résulte une erreur du compilateur. Une solution est de mettre ici l'argument explicite de x, mais je pense que cela va à l'encontre de l'objectif de auto dans la déclaration ! Donc, comment puis-je utiliser le type de x en tant qu'argument de modèle, sans écrire explicitement le type (de sorte que dans les changements de type, mon code reste valide).

+3

'decltype (x)'? – peppe

+1

Utilisez 'decltype()' à la place – DimChtz

+2

Voulez-vous dire ['decltype'] (http://fr.cppreference.com/w/cpp/language/decltype)? Ou utilisez-vous en effet GCC et son ['typeof'] (https://gcc.gnu.org/onlinedocs/gcc/Typeof.html)? En outre, pouvez-vous publier le message d'erreur complet du compilateur? – Cornstalks

Répondre

4

Seul le compilateur GNU a le typeof. Au lieu de cela, utilisez le decltype qui est une fonctionnalité C++ 11.