【问题标题】:Is ref const X the same as const ref X in D?ref const X 是否与 D 中的 const ref X 相同?
【发布时间】:2014-06-16 18:29:32
【问题描述】:

最近在这里讨论了const 在 D 中的位置(函数名称的右侧或左侧等)有多么奇怪。

现在我想知道,函数参数中ref const X是否与const ref X相同?

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

【问题讨论】:

    标签: constants d


    【解决方案1】:

    仅当您需要使用括号时,顺序才重要。

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

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

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

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

    因为没有办法将ref 放在const 的右侧,并在其中加上括号。

    当不是语法问题时,我知道属性顺序对参数、其他类型的变量或返回类型很重要的唯一情况是auto ref,因为auto ref 本质上是一个属性由两个词组成,而不是两个独立的属性都影响符号。在所有其他情况下,顺序无关紧要。并且顺序对功能属性也无关紧要。只是函数签名位的整个左侧与右侧是排序问题。

    【讨论】:

    • 好的,谢谢!说例如是否有意义? const ref(int)[] ?因为这是你唯一没有考虑过的事情 ;-)
    • @BindersLachel 不,这不起作用。正如我所说,由于括号,您不能将ref 放在右侧。他们选择const,而不是ref
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2015-10-02
    • 2019-08-18
    • 2018-08-09
    • 2020-04-13
    • 2012-08-22
    相关资源
    最近更新 更多