Articles of Modèles

Sélectionnez le constructeur de classe à l’aide de enable_if

Considérez le code suivant: #include #include template struct A { int val = 0; template <class = typename std::enable_if::type> A(int n) : val(n) {}; A(…) { } /* … */ }; struct YES { constexpr static bool value = true; }; struct NO { constexpr static bool value = false; }; int main() { A […]

C ++ appelle un constructeur de modèle explicite

Pouvez-vous me dire comment invoquer explicitement un constructeur de template (dans la liste des initialiseurs)? par exemple: struct T { template T(); }; struct U { U() : t() {} //does not work T t; }; Merci

C ++ 11: Calcul du temps de compilation d’un tableau

Supposons que j’ai une fonction constexpr f: constexpr int f(int x) { … } Et j’ai quelques const int N connus au moment de la compilation: Non plus #define N …; ou const int N = …; selon vos besoins. Je veux avoir un tableau int X: int X[N] = { f(0), f(1), f(2), …, […]

Visual Studio 2010 Modèles de création et d’installation

J’utilise F # et j’ai trouvé que les modèles disponibles étaient un peu rares à mon goût, et je veux en faire plus. Comment pourrais-je faire ça? Comment puis-je installer ces modèles après les avoir créés?

Pourquoi le paquet de parameters de modèle est-il utilisé dans un type d’argument de fonction en tant que liste d’arguments de modèle qui ne peut pas être explicitement spécifié?

J’ai le morceau de code suivant: template struct AAA{}; template void f(AAA *) {} int main() { f(nullptr); } Ce code entraîne une erreur de compilation. Lors de la compilation à l’aide de g++ -std=c++1z l’erreur est la suivante: prog.cc: In function ‘int main()’: prog.cc:8:24: error: no matching function for call to ‘f(std::nullptr_t)’ f(nullptr); ^ […]

Restreindre les arguments des modèles variadiques

Peut-on restreindre les arguments des modèles variadiques à un certain type? Ie, réaliser quelque chose comme ça (pas de C ++ réel bien sûr): struct X {}; auto foo(X… args) Ici, mon intention est d’avoir une fonction qui accepte un nombre variable de parameters X Le plus proche est celui-ci: template auto foo(Args… args) mais […]

Erreur de référence non définie pour la méthode de modèle

Cela me rend fou depuis une heure et demie. Je sais que c’est une petite chose mais je ne peux pas trouver ce qui ne va pas (le fait que c’est un vendredi après-midi pluvieux, bien sûr, n’aide pas). J’ai défini la classe suivante qui contiendra les parameters de configuration lus dans un fichier et […]

Pourquoi n’est-il pas possible de surcharger les modèles de classe?

La lecture de cette question m’a fait me demander: existe-t-il une raison technique pour refuser les surcharges de modèles de classe? En surchargeant, je veux dire avoir plusieurs modèles avec les mêmes noms, mais des parameters différents, par exemple template struct Foo {}; template struct Foo {}; template struct Foo {}; Le compilateur gère les […]

La fonction std :: transform-like qui renvoie un conteneur transformé

J’essaie d’implémenter une fonction similaire à l’algorithme std::transform mais au lieu de prendre l’iterator de sortie par un argument, je veux créer et renvoyer un conteneur avec des éléments d’entrée transformés. Disons qu’il s’appelle transform_container et prend deux arguments: container et functor. Il devrait renvoyer le même type de conteneur mais éventuellement paramétré par un […]

Comment vérifier le type d’un paramètre de modèle?

Supposons que j’ai une fonction de template et deux classes class animal { } class person { } template void foo() { if (T is animal) { kill(); } } Comment est-ce que je fais le chèque pour que T soit animal? Je ne veux pas avoir quelque chose qui vérifie pendant l’exécution. Merci