模板成员may be implicitly referred to如果他们是模板的唯一成员,并且他们共享模板的名称:
template foo(int number)
{
immutable int foo = number;
}
void main()
{
writeln(foo!(123)); // Okay.
}
但是,如果我想明确引用成员
,该怎么办?writeln(foo!(123).foo); // Error: attempts to access the foo property of int.
我没有充分理由这样做,但我觉得它一定是可能的。
答案 0 :(得分:7)
使用时,同名模板将替换为其值。所以,就编译器而言,编写
writeln(foo!(123).foo);
与写作基本相同
writeln(123.foo);
这不合法。该行将导致与您获得的基本相同的错误。您不应该访问同名模板的成员。它们是故意不透明的。
答案 1 :(得分:2)
你不能 - 同名的模板是不透明的;你不能那样对待他们。