我有一个高度可配置的类,有许多模板参数,如下所示:
template<bool OptionA = false, bool OptionB = false, bool OptionC = false, class T = Class1B>
class MyClass
{
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想创建类类型并且我只想将OptionB设置为true,我必须执行以下操作:
MyClass<false, true>
特别是对于许多模板参数,这变得很麻烦.
不,我的问题是,是否有任何可用于使用构建器模式创建基于模板的类类型的示例?
我正在寻找这样的东西:
class Builder
{
useOptionA();
useOptionB();
useOptionC();
useClass2B(); //instead of Class1B
create();
}
Run Code Online (Sandbox Code Playgroud)
最后一个Builder.useOptionB().useOptionC().useClass2B.create()应该回来的电话MyClass<false, true, true, Class2B>.这可能吗?
编辑:向模板参数列表添加了类.
我怎么知道何时可以通过negamax alpha beta修剪和转置表来停止增加迭代加深算法的深度?以下从wiki页面获取的伪代码:
function negamax(node, depth, ?, ?, color)
alphaOrig := ?
// Transposition Table Lookup; node is the lookup key for ttEntry
ttEntry := TranspositionTableLookup( node )
if ttEntry is valid and ttEntry.depth ? depth
if ttEntry.Flag = EXACT
return ttEntry.Value
else if ttEntry.Flag = LOWERBOUND
? := max( ?, ttEntry.Value)
else if ttEntry.Flag = UPPERBOUND
? := min( ?, ttEntry.Value)
endif
if ? ? ?
return ttEntry.Value
endif
if depth = 0 or node is a terminal …Run Code Online (Sandbox Code Playgroud)