D プログラミング言語リファレンスでは、宣言と型修飾子のセクションに 2 つの例が示されているため、どちらも可能です。
struct S
{
int method() const
{
//const stuff
}
}
struct S
{
int method() immutable
{
//immutable stuff
}
}
ドキュメントから:
const メンバー関数は、メンバー関数の this 参照を通じてオブジェクトのどの部分も変更できない関数です。
と:
不変メンバー関数は、オブジェクトと this 参照によって参照されるものはすべて不変であることが保証されています。
私はこの質問を見つけましたが、すべての回答はストレージ クラスではなく、データ型に関するものです。同じことがD const FAQにも当てはまりますが、興味深い読み物です。
では、上記の 2 つの定義の違いは何でしょうか? //const stuff
を置き換えて合法であるがそうではない表現はあり//immutable stuff
ますか?