Articles of modèles

boost: enable_if pour définir une méthode dédiée dans une classe basée sur des modèles

Je voudrais avoir une méthode personnalisée – j’appellerai MyMethod – dans une classe basée sur des modèles – J’appellerai Foo – SEULEMENT lorsque Foo a été instancié avec certains types de parameters de modèle (par exemple, lorsque A est entier et B est une chaîne), sinon, Je ne veux pas que MyMethod existe du tout […]

Forcer SFINAE avec un type de retour différent

Cette réponse montre donc comment utiliser une fonction dans le type de retour pour forcer l’ échec de la substitution n’est pas une erreur (SFINAE) . Existe-t-il un moyen de l’utiliser et d’ avoir un type de retour différent de celui de la fonction? Donc, une ligne d’arguments à overload déclenchera le SFINAE: overload { […]

Que fait ce modèle de code de «spécialisation» et pourquoi comstack-t-il mais ne fonctionne-t-il pas comme prévu?

J’essaie de spécialiser une seule méthode d’un modèle de classe . La réponse acceptée ici fonctionne vraiment, mais que signifie ce code pour le compilateur et pourquoi ne fonctionne-t-il pas comme prévu? #include template struct Node { void split() { puts( “Default method” ) ; } // this comstacks, but it doesn’t appear to do […]

erreur C2955 et erreur C2244 à l’aide du modèle C ++

Je commence à apprendre le modèle C ++. Maintenant, j’essaie de comstackr l’exemple simple du modèle C ++. #include template class pair1 { T value1, value2; public: pair1 (T first, T second) { value1=first; value2=second; } T getmax (); }; template T pair1::getmax (){ T retval; retval = value1>value2? value1 : value2; return retval; } […]

Appel d’une méthode de classe super-modèle sans connaître le type de modèle en C ++

J’ai une classe de base qui utilise un modèle et quelques méthodes qui ne dépendent pas du type de modèle, mais lorsque j’utilise le pointeur Base* a au lieu de la classe dérivée, le compilateur se plaint car aucun type n’est spécifié. Je sais que c’est possible en Java, mais je ne sais pas si […]

Comment définir un modèle de variable globale en C ++?

Supposons que vous deviez écrire une bibliothèque de modèles qui fonctionne sur un type fourni par le client. En outre, supposons que cette bibliothèque ait réellement besoin d’accéder à une variable globale paramétrée par le type fourni par le client. Comment allez-vous mettre en œuvre ce modèle?

Déclaration avancée de classe de modèle (modèle de conception du visiteur)

J’essaie de déclarer une classe de modèle A pour utilisation dans une classe de Visitor . Il suffirait à mes fins de déclarer l’instance int A de la classe A J’ai essayé deux approches mais les deux donnent des erreurs différentes et je ne sais pas comment procéder. Voici un MWE de mon erreur: namespace […]

Instanciation de modèles avec tatou et boost :: numeric :: odeint

J’essaie de combiner boost :: numeric :: odeint avec une implémentation de la classe System qui me correspond (voir System.hpp). Un object système (modèle) est utilisé dans une méthode de classe BatchFilter, comme suit: # BatchFilter.cpp # template BatchFilter class {…} System dynamics(this -> args, N_true, this -> true_dynamics_fun ); typedef boost::numeric::odeint::runge_kutta_cash_karp54 error_stepper_type; auto stepper […]

Pourquoi ce CRTP ne comstack pas?

Dupliquer possible: Types “hérités” utilisant CRTP et typedef template struct A { typename T::Sub s; }; struct B : A { struct Sub {}; }; Clang rapporte cette erreur: todo.cc:3:15: error: no type named ‘Sub’ in ‘B’ typename T::Sub s; ~~~~~~~~~~~~^~~ todo.cc:6:12: note: in instantiation of template class ‘A’ requested here struct B : A […]

Conception basée sur une stratégie C ++ avec une valeur de retour de type variable

Je souhaite utiliser la conception basée sur des stratégies pour modifier le type de retour d’une classe hôte en fonction des stratégies que j’utilise. Voici un exemple: class IntPolicy { public: int doIntPolicy(double anInput) { return static_cast(anInput); } }; class DoublePolicy { public: double doDoublePolicy(int anInput) { return static_cast(anInput); } }; template class SimpleHost { […]