如何明确引用此模板成员?

Max*_*xpm 3 templates d explicit implicit

如果模板成员模板的唯一成员,并且它们共享模板的名称,可以隐式引用模板成员:

template foo(int number)
{
    immutable int foo = number;
}

void main()
{
    writeln(foo!(123)); // Okay.
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想明确地引用该成员呢?

writeln(foo!(123).foo); // Error: attempts to access the foo property of int.
Run Code Online (Sandbox Code Playgroud)

我没有充分的理由,但我觉得这一定是可能的.

Jon*_*vis 7

使用时,同名模板将替换为其值.所以,就编译器而言,写作

writeln(foo!(123).foo);
Run Code Online (Sandbox Code Playgroud)

与写作基本相同

writeln(123.foo);
Run Code Online (Sandbox Code Playgroud)

这不合法.该行将导致与您获得的基本相同的错误.您不应该访问同名模板的成员.它们是故意不透明的.