D 类模板中的纯构造函数
我有一些有效的代码,我不知道为什么。我将类实例化为不可变变量。类中没有D 类模板中的纯构造函数,d,D,我有一些有效的代码,我不知道为什么。我将类实例化为不可变变量。类中没有不可变的构造函数,也没有标记为纯的,但它仍然可以工作 我还了解到,pure构造函数可以广泛用于可变、不可变、常量和共享实例 我能在D网站上找到的唯一一件事是在函数模板中推断纯度。既然我的类是参数化的(或类模板),那么编译器是否应该推断所有方法的纯度,包括构造函数 代码如下: public class Data(size_t numInputs, size_t numTargets) { ... public this(
不可变的
构造函数,也没有标记为纯的
,但它仍然可以工作
我还了解到,pure
构造函数可以广泛用于可变、不可变、常量和共享实例
我能在D网站上找到的唯一一件事是在函数模板中推断纯度。既然我的类是参数化的(或类模板),那么编译器是否应该推断所有方法的纯度,包括构造函数
代码如下:
public class Data(size_t numInputs, size_t numTargets)
{
...
public this(in double[][] data, in bool[] filter, in bool doNorm = true)
{
...
}
}
我能在D网站上找到的唯一一件事是在函数模板中推断纯度。既然我的类是参数化的(或类模板),那么编译器是否应该推断所有方法的纯度,包括构造函数
对。由于类是一个模板,所有方法也都是模板(考虑它们必须是模板,因为隐藏的此参数的类型来自模板)。因此,他们的身体必须在源头上可用。推断属性的两个要求是body source可用,以及它们的模板参数(函数也不能尝试调用或检查自身,但您也不能这样做),因此可以将其推断为纯属性