ref const X与D中的const ref X相同吗?

时间:2014-06-16 18:29:33

标签: const d

最近在这里讨论了在放置方面(功能名称的右侧或左侧等)D中有多奇怪const

现在我想知道,如果ref const X与函数参数中的const ref X相同吗?

两个版本都在我的测试项目中编译,但我想要一个确认

1 个答案:

答案 0 :(得分:4)

只有在你需要使用parens时,订单才有意义。

void foo(ref const int* x) {...}

相同
void foo(const ref int* x) {...}

但是,如果你想要const(int)*,那么你将不得不这样做

void foo(ref const(int)* x) {...}

因为那时没有办法将ref放在const的右侧,并且那里有parens。

我唯一知道属性顺序对参数,其他变量类型或返回类型的重要性的情况,如果它不是语法问题是auto ref,因为auto ref本质上是一个由两个单词组成的属性,而不是两个影响符号的独立属性。在所有其他情况下,订单不重要。顺序对功能属性也没有影响。它只是功能签名位的左侧和右侧的整个排序问题。