我正在尝试使用一些示例代码,我的编译器不会编译这一行:
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模板没有定义。
答案 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>());