Является ли ref const X таким же, как const ref X в D?
Совсем недавно здесь обсуждалось, как странно const
находится в D с точки зрения размещения (справа или слева от имени функции и т. д.).
Интересно, если ref const X
такой же как const ref X
в параметре функции?
обе версии компилируются в моем тестовом проекте, но мне нужно подтверждение
1 ответ
Порядок имеет значение, только если вам нужно использовать Parens.
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
по сути, это атрибут, состоящий из двух слов, а не двух отдельных атрибутов, оба влияющих на символ. Во всех остальных случаях порядок не должен иметь значения. И порядок не имеет значения и для атрибутов функции. Это всего лишь левая сторона против правой части бита сигнатуры функции, это проблема упорядочения.