这不起作用(这是在课堂上):
template this(T : U[], U)
{
this (U[] array)
{
static if (is(U:V[],V) // array
{
}
else static if (is(U:V[string]),V) // hash
{
}
}
}
有没有办法让它工作?
你不能定义一个长格式的模板构造函数(根据语法,模板标识符不能是关键字)。你可以这样做:
this(U)(U[] array) {
// same stuff
}
请注意,没有有效的方法来显式实例化这样一个ctor,它必须使用IFTI。
这种情况似乎不需要它,但是如果您确实需要对模板实例化进行更多控制,则可以使用工厂函数。