2014年7月31日木曜日

参照カウントはmutableかimmutableか

C++で参照カウントを実装する場合に,参照カウントを変更するincrement,decrementはconstなメンバ関数にすべきか,非constにすべきか,constにする場合,カウンタをmutableにするか,という話題が出た.感覚的にはconstにしてカウンタはimmutableかな,と思ったのだけれど,とりあえずいくつかのライブラリを調べてみた.


  • const派 (カウンタはmutable)
    • LLVM
    • Unreal Engine 4
  • 非const派
    • boost
    • libcxx
    • Loki
参照カウンタは,オブジェクトの状態の一部ではないので変更しても問題ない,参照カウンタを
変更しても,外から見える振る舞いは変わらない,という理由でconstにしても良いのでは,といった説明を見たりしていると,constでも良いのでは,という気がしてきた.