什么是C ++中的Bool <true> - 是来自boost?</true>

时间:2012-03-22 18:01:39

标签: c++

我正在尝试使用一些示例代码,我的编译器不会编译这一行:

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

编译器是MS VS2005。我不认识布尔 - 所以不知道如何更换它。此默认参数是否等效:

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

样本来自http://accu.org/index.php/journals/252。代码只是文本中的代码段 - 没有关于#include'd的代码片段 - 很难解决。 Bool模板没有定义。

1 个答案:

答案 0 :(得分:5)

我猜Bool定义为

template <bool B> struct Bool{};

您可以将其用于某些基本模式匹配:

void exitActions(Bool<true>)  { std::cout << "called with true\n"; }
void exitActions(Bool<false>) { std::cout << "called with false\n"; }

int main()
{
  exitActions(Bool<true>());  // prints "called with true"
  exitActions(Bool<false>()); // prints "called with false"
}

如果您使用Bool<true>重载Bool<false>,这当然才有意义。但是在源http://accu.org/index.php/journals/252中(Marcin猜测),就是这种情况。

还有一个类似的函数调用

Tran<T,S,T>::entryActions(host_, Bool<false>());