В справочнике по языку программирования D показаны два примера в Declarations и Квалификаторы типов, поэтому возможны оба варианта:
struct S
{
int method() const
{
//const stuff
}
}
struct S
{
int method() immutable
{
//immutable stuff
}
}
Из документов:
Константные функции-члены — это функции, которым не разрешено изменять какую-либо часть объекта с помощью ссылки this в функции-члене.
А также:
Неизменяемые функции-члены гарантируют, что объект и все, на что ссылается эта ссылка, неизменны.
Я нашел этот вопрос, но все ответы говорят о типах данных, а не о классах хранения. То же самое касается Часто задаваемых вопросов по D const, хотя читать его интересно.
Так в чем же разница между двумя приведенными выше определениями? Существуют ли выражения, которые могут заменить //const stuff
и быть допустимыми, но не //immutable stuff
?