Questions marquées «templates»

La balise templates est utilisée dans plusieurs contextes: programmation générique (en particulier C ++) et génération de données / documents à l'aide de moteurs de modèles. Lorsque vous utilisez cette balise sur des questions lourdes d'implémentation - étiquetez le langage de code dans lequel l'implémentation est écrite


3
Exécuter la fonction à l'intérieur du modèle de fonction uniquement pour les types ayant la fonction définie
J'ai un modèle de fonction qui prend de nombreux types différents en entrée. Parmi ces types, un seul a une getInt()fonction. Par conséquent, je veux que le code exécute la fonction uniquement pour ce type. Veuillez suggérer une solution. Merci #include <type_traits> #include <typeinfo> class X { public: int getInt(){ …

6
Comment comparer des structures génériques en C ++?
Je veux comparer les structures de manière générique et j'ai fait quelque chose comme ça (je ne peux pas partager la source réelle, alors demandez plus de détails si nécessaire): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) …


1
Définition hors classe C ++ 20 dans une classe modèle
Jusqu'à la norme C ++ 20 de C ++, lorsque nous voulions définir un opérateur hors classe qui utilise certains membres privés d'une classe de modèle, nous utilisions une construction similaire à ceci: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename …
12 c++  templates  c++20 

2
Passer d'un concept à une fonction
Puisque les concepts sont définis comme des prédicats au moment de la compilation, est-il également possible de réutiliser ces prédicats pour les algorithmes au moment de la compilation? Par exemple, serait-il possible de vérifier si tous les types d'un tuple sont conformes à un concept? Pour autant que je l'ai …


1
Un modèle de variable peut-il être passé comme argument de modèle de modèle?
L'exemple absurde suivant ne se compile pas, mais existe-t-il un autre moyen de passer un modèle de variable comme argument de modèle de modèle? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, …

2
Déduction des types d'arguments du modèle de modèle C ++
J'ai du code qui trouve et imprime les correspondances d'un modèle en passant par le conteneur de chaînes. L'impression est effectuée dans la fonction foo qui est modélisée Le code #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void …

1
Problème dans GCC / C ++ 17 avec la classe de modèles de modèles
Considérez les 2 surcharges suivantes template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Le 1er fonctionne pour les classes régulières, tandis que le 2ème fonctionne pour les modèles qui ne sont pas instanciés. Par exemple: std::cout<<test<int>()<<std::endl; <-- this yields 1 …
10 c++  templates  gcc  clang  c++17 


3
Pourquoi n'est-il pas nécessaire d'utiliser le nom de type pour les types dépendants dans le cas suivant?
J'ai lu sur la suppression de la référence d'un type ici . Il donne l'exemple suivant: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, …




En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.