Articles of templates

Contournement de la spécialisation du modèle

Supposons que je sois un utilisateur d’une bibliothèque de modèles spécifiques ( CTL ) qui définit un modèle, nommé par exemple Hector template class Hector {…}; Et dans sa documentation, il donne de nombreuses garanties sur le comportement du modèle Hector . Mais alors, il définit également une spécialisation pour un certain type Cool template […]

Initialisation du membre statique C ++ (modèle amusant à l’intérieur)

Pour l’initialisation des membres statiques, j’utilise une structure d’assistance nestede, qui fonctionne bien pour les classes non basées sur des modèles. Cependant, si la classe englobante est paramétrée par un modèle, la classe d’initialisation nestede n’est pas instanciée si l’object d’assistance n’est pas accessible dans le code principal. A titre d’illustration, un exemple simplifié (dans […]

Pourquoi l’expansion du pack de parameters fonctionne-t-elle différemment avec différents compilateurs C ++?

L’expansion du pack de parameters est inversée par le compilateur VS2015. J’ai le code suivant: #include #include template void f_Swallow(T &&…) { } template std::vector f(T …arg) { std::vector result; f_Swallow ( [&]() { result.push_back(arg); return true; } ()… ) ; return result; } using namespace std; int main() { auto vec = f(1,2,3,4); for […]

Handlebars.js si l’assistant de blocage ==

Comment changeriez-vous le code suivant pour le faire fonctionner? Le problème est l’expression this == ‘some message’: {{#each errors}} {{#if (this == ‘some message’) }} Status {{else}} {{this}} {{/if}} {{/each}}

Comment puis-je déclarer un vecteur membre de la même classe?

Pourquoi le code suivant fonctionne-t-il? struct A { std::vector subAs; }; A est un type incomplet, non? S’il y avait un vecteur de A *, je comprendrais. Mais ici je ne comprends pas comment ça marche. Cela semble être une définition récursive.

Toutes les versions de GCC luttent avec un modèle qui a le type par défaut dans une définition

J’ai perdu d’innombrables heures pour identifier un problème avec gcc . Je voulais tester notre base de code avec un autre compilateur pour rechercher plus d’avertissements que Clang aurait pu manquer. J’ai été choqué que pratiquement la moitié du projet se soit arrêté en raison de l’échec de la déduction des arguments du modèle. Ici, […]

Utiliser $ comstack sur un modèle externe (templateURL) dans une directive angular

J’ai une directive angular récursive qui utilise une variable de modèle et qui est compilée dans la fonction de link . Le problème est que mon template est devenu très long et hors de contrôle et que je veux l’externaliser dans un fichier HTML externe (cela faciliterait aussi l’auto-indentation par exemple). Comment pouvez-vous charger un […]

Pourquoi alias template donne-t-il une déclaration contradictoire?

Le port d’un code C ++ 11 de Clang à g ++ template using value_t = typename T::value_type; template struct S { using value_type = int; static value_type const C = 0; }; template value_t<S> // gcc error, typename S::value_type does work const S::C; int main() { static_assert(S::C == 0, “”); } donne un comportement […]

Spécialisation partielle des modèles variadiques

Considérons le modèle de classe «X» suivant et ses spécialisations partielles. template struct X {}; // #1 template struct X {}; // #2 template struct X {}; // #3 X x; // #2 or #3 ? Je pense que X est ambigu. C’est parce que: Il est évident que les deux # 2 et # […]

Spécialisation partielle du paramètre de modèle par défaut

Veuillez m’expliquer pourquoi le code suivant est conforme et fonctionne parfaitement. Je suis très confus. #include template class Base {}; template class Base { public: Base() { std::cout<<"it works!!!!!\n"; } }; int main() { Base base; // it prints “it works!!!!!” return 0; } Ne devrait-il pas tomber dans la forme généralisée de la classe […]