Articles of Modèles

Modèle mixte linéaire avec effets répétés croisés et structure de covariance AR1, en R

J’ai des données physiologiques internes aux participants (en part ), qui ont toutes regardé des stimuli (lecture de journaux) sur trois tours ( round ), chacun comportant cinq articles ( paper ) et un nombre variable de visites ( visit ) dans le journal. J’ai deux facteurs fixes ( CONDhier et CONDabund ) plus une […]

Obtention de métaprogrammation de gabarits à la compilation à l’exécution

Contexte Considérer ce qui suit: template struct Fibonacci { enum { value = Fibonacci::value + Fibonacci::value }; }; template struct Fibonacci { enum { value = 1 }; }; template struct Fibonacci { enum { value = 0 }; }; Ceci est un exemple courant et nous pouvons obtenir la valeur d’un nombre de Fibonacci […]

déclaration ami déclare une fonction non-modèle

J’ai une classe de base similaire au code ci-dessous. Je tente de surcharger << à utiliser avec cout. Cependant, g ++ dit: base.h:24: warning: friend declaration ‘std::ostream& operator<<(std::ostream&, Base*)’ declares a non-template function base.h:24: warning: (if this is not what you intended, make sure the function template has already been declared and add after the […]

Les méthodes virtuelles pures sont-elles autorisées dans une classe de modèle?

Une fois auparavant, j’étais certain que vous ne pouviez pas faire cela, mais l’autre jour, je jouais avec du code et cela semblait comstackr et fonctionner. Je veux juste vérifier que je ne fais pas que gagner de la chance. Une classe de modèle peut-elle avoir une fonction virtuelle pure – ce qui, je suppose, […]

Pourquoi une classe de modèle dérivée n’a-t-elle pas access aux identificateurs d’une classe de modèle de base?

Considérer: template class Base { public: static const bool ZEROFILL = true; static const bool NO_ZEROFILL = false; } template class Derived : public Base { public: Derived( bool initZero = NO_ZEROFILL ); // NO_ZEROFILL is not visible ~Derived(); } Je ne suis pas capable de comstackr ceci avec GCC g ++ 3.4.4 (cygwin). Avant […]

Types supérieurs avec C ++

Cette question s’adresse aux personnes qui connaissent à la fois Haskell (ou tout autre langage fonctionnel prenant en charge les types supérieurs) et C ++ … Est-il possible de modéliser des types similaires à l’aide de modèles C ++? Si oui, alors comment? MODIFIER : De cette présentation de Tony Morris: Polymorphisme d’ordre supérieur: Des […]

Faire une fonction acceptant une option pour accepter un non-optionnel?

J’essaie d’écrire du sucre syntaxique, dans un style std::optional , sur std::optional . S’il vous plaît considérer: template void f(std::optional) {} Comme c’est le cas, cette fonction ne peut pas être appelée avec un T 1 non optionnel (par exemple un int ), même s’il existe une conversion de T en std::optional 2 . Est-il […]

fonction de membre de modèle de la classe de modèle appelée à partir de la fonction de modèle

Cela ne comstack pas: template struct A { template void f() {} }; template void g() { A a; af(); // Compilation fails here (Line 18) } int main(int argc, char *argv[]) { g(); // Line 23 } Le compilateur (gcc) dit: hhh.cpp: Dans la fonction ‘void g ()’: hhh.cpp: 18: erreur: expression primaire attendue […]

Pourquoi y a-t-il tant de spécialisations de std :: swap?

En regardant la documentation de std::swap , je vois beaucoup de spécialisations. Il semble que chaque conteneur STL, ainsi que de nombreuses autres installations std, disposent d’un échange spécialisé. J’ai pensé à l’aide de modèles, nous n’aurions pas besoin de toutes ces spécialisations? Par exemple, Si j’écris ma propre pair cela fonctionne correctement avec la […]

Comment la bibliothèque standard implémente-t-elle std :: swap?

Comment la fonction d’échange est-elle implémentée dans la STL? Est-ce aussi simple que cela: template void swap(T& t1, T& t2) { T tmp(t1); t1=t2; t2=tmp; } Dans d’autres articles, ils parlent de spécialiser cette fonction pour votre propre classe. Pourquoi devrais-je le faire? Pourquoi ne puis-je pas utiliser la fonction std::swap ?