Définition de type d'un modèle de classe sans spécifier les paramètres du modèle
Je suis en train de typedef, soit une unordered_map ou std::map selon qu'il y a TR1 bibliothèques disponibles. Mais je ne veux pas de spécifier les paramètres du modèle. De ce que j'ai lu jusqu'à présent, typedef avec des modèles sans arguments n'est pas possible jusqu'à ce que officiel c++0x standard est disponible. Donc, personne ne sait d'une élégante solution pour cela?
#ifdef _TR1
#include <unordered_map>
typedef std::tr1::unordered_map MyMap; //error C2976: too few template arguments
#else
#include <map>
typedef std::map MyMap; //error C2976: too few template arguments
#endif
- Voir cela de très près à la question : stackoverflow.com/questions/544842/c-typedef-ing-stl et les réponses apportées. Modèle typedefs ne sont pas valides commandes C++
- Benoit - Merci, c'est exactement ce que je cherchais
- Question très semblable: stackoverflow.com/questions/6907194/... Il a une autre réponse qui n'est pas mentionné ici: "alias" modèle en c++11
Vous devez vous connecter pour publier un commentaire.
La façon dont j'ai vu cette façon de faire est d'envelopper le typedef dans un template struct:
Puis dans votre code, vous appelez cela de la sorte:
Il peut être un peu plus détaillé que ce que vous voulez, mais je crois qu'il répond à la nécessité, compte tenu de l'état actuel de C++.
Vous devez utiliser l'ensemble des types pour les typedefs.
Utiliser un #define macro.