D中的模糊结构构造函数

dec*_*iar 6 constructor struct d initialization ambiguity

我在理解如何处理D中构造函数的模糊性方面遇到了一些麻烦.

struct mydta {
    int a = 2;
    int b = 3;

    this(int c) {
        a = c / 2;
        b = c * 2;
    }
    this(float c) {
        a = cast(int) c / 2;
        b = cast(int) c * 2;
    }

    static mydta afvec = mydta(4.3);
    static mydta aivec = mydta(5);
}
Run Code Online (Sandbox Code Playgroud)
  • afvec 数据值为2和8.
  • aivec 具有数据值5和3.

这意味着从语法中按预期afvec调用this(float c).

但是aivec做了类似的任务aivec.a = 5.

我在此推断,发现以下内容是合法的:分别aivec = mydta(5, 4);给出aivec值5和4.

任何想法如何绕过这个隐式初始化,以便我可以访问我的构造函数:this(int c)

Pet*_*der 5

对我来说这看起来像个错误.

如果你这样做:

mydta foo = mydta(5);
writeln(foo.b);
Run Code Online (Sandbox Code Playgroud)

10按预期得到了.对于版本2.053,CTFE有很多变化,因此可能会因某些原因而被破坏.请将其发布为D问题跟踪系统中的错误.