5 votes

Qu'est-ce que Bool<true> en C++ - est-ce de boost?

Je suis en train d'essayer d'utiliser un code d'exemple et mon compilateur ne compile pas cette ligne :

static void exitActions(Host& h, Bool) {}

Le compilateur est MS VS2005. Je ne reconnais pas Bool - donc je ne sais pas comment le remplacer. Est-ce que ce paramètre par défaut est équivalent :

static void exitActions(Host& h, bool b = true) {}

L'exemple provient de http://accu.org/index.php/journals/252. Le code est juste des extraits dans le texte - aucun extrait sur ce qui est inclus - donc difficile à comprendre. Il n'y a aucune définition pour un modèle Bool.

5voto

ipc Points 5761

Je suppose que Bool est défini comme suit

template  struct Bool{};

Vous pouvez utiliser ceci pour un appariement rudimentaire des modèles :

void exitActions(Bool)  { std::cout << "appelé avec vrai\n"; }
void exitActions(Bool) { std::cout << "appelé avec faux\n"; }

int main()
{
  exitActions(Bool());  // affiche "appelé avec vrai"
  exitActions(Bool()); // affiche "appelé avec faux"
}

Cela n'a bien sûr de sens que si vous surchargez Bool avec Bool. Mais dans la source http://accu.org/index.php/journals/252 (deviné par Marcin), c'est le cas.

Il y a aussi un appel de fonction similaire

Tran::entryActions(host_, Bool());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X