Articles of modèles

méthode modèle correspondant au type dérivé au lieu de la base

J’ai un ensemble d’opérateurs que je dois remplacer pour la modélisation d’expression. Je voudrais que toutes les classes dérivées d’un type de base correspondent au type de base. D’autres choses seraient alors attrapées par un type générique. Malheureusement, le type générique récupère les types dérivés avant le type de base. Pour rendre les choses agréables […]

Pile de modèles et LIFO C ++

J’essaie donc d’en apprendre davantage sur les modèles et les éléments de la stack Fifo et Lifo. J’ai joué avec du code qui traite de cela, et je peux obtenir que les données int fassent ce que je veux pour les tests, mais je ne peux pas pour toute la vie comprendre comment faire fonctionner […]

écriture de la fonction de membre modèle sur le type de conteneur en dehors d’une classe de modèle

J’ai une classe de modèle où j’essaye de définir une fonction membre en dehors de la définition de classe comme suit: class traits { typedef std::vector container_t; …other typedefs// }; template class Foo { typedef typename traits::container_t container_t // where container_t = std::vector // member function to be templatized over container type void Initialize (container_t&); […]

Initialisation correcte du tableau statique constexpr dans le modèle de classe?

Les membres statiques de la classe en C ++ ont créé un peu de confusion en raison du verbiage de la norme: 9.4.2 Membres de données statiques [class.static.data] La déclaration d’un membre de données statique dans sa définition de classe n’est pas une définition … Cependant, un constexpr doit être initialisé (AFAIK, impossible de trouver […]

comment gabarit pour l’opérateur << pour ostream

Ce qui suit ne sera pas compilé pour moi. Je suis à court d’idées … Une aide? template inline std::ostream& operator<< <const std::map > (std::ostream& stream, const std::map& some_map) { return stream; } g ++ me donne l’erreur suivante: erreur: initialiseur attendu avant le jeton ‘<' Edit: 1 Ok, puisque tout le monde me dit […]

modèle de méta-programmation OU opération

J’ai une classe qui peut être décorée avec un ensemble de modèles supplémentaires pour fournir des fonctionnalités supplémentaires. Chaque module complémentaire a une valeur d’identification addon que la classe de base doit connaître. Le code ci-dessous est un exemple de ce que je voudrais faire. De toute évidence, la fonction main () ne parvient pas […]

Classes de modèles surchargées

Je travaille sur un système de type propriété en c ++, dont un composant dans une classe de modèle d’accesseur, qui crée des fonctions statiques que je peux ensuite faire passer des pointeurs de, dans ma classe de propriété pour obtenir des opérations sur un ensemble. Voici à quoi ressemble l’accesseur: template struct Accessor { […]

Paramètres de spécialisation et de modèle de modèle

J’ai le suivant: template <template class C, class T, class A > class TTCTest { public: TTCTest(C parameter) { /* … some stuff… */ } C _collection; }; Je veux m’assurer que le modèle n’est instancié que lorsque les classes T et A sont d’un type spécifique (chemin et allocateur respectivement). Par exemple: … list<path, […]

Comment utiliser CRTP avec des modèles variadiques?

Supposons à l’origine que j’ai le design suivant en utilisant CRTP: template class Generator { protected: vector v; private: void work(ostream& out) { // perform first part of some complex operations on v out << *static_cast(this); // perform second part of some complex operations on v out << *static_cast(this); // many more …. // perform […]

La résolution de déduction / surcharge de modèle favorise T && par rapport à const T &

J’ai une paire de modèles de fonctions définis comme suit: template Foo f(const CollectionType& v) { return Foo(v); // copies v into a member variable } template Foo f(CollectionType&& v) { return Foo(std::move(v)); // moves v into a member variable } Si j’appelle f comme ci-dessous: std::vector v; f(v); Le compilateur VC ++ favorise la […]