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 […]
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
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), …, […]
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?
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); ^ […]
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 […]
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 […]
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 […]
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 […]
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