2013年4月7日日曜日

C++ メモ

メモリリーク

以下のように書くとメモリリークするかもしれない。 関数の引数を評価する順序は不定なので、
  1. new int(5)
  2. seed()
  3. std::shared_ptrのコンストラクタ呼び出し
の順で評価された場合、seed()が例外を投げるとメモリリークを起こす。 と書けば良い。

std::begin/end

std::begin/endを使えば統一的に記述できる。

lambda trick

参照サイト 9行目の()でlambda式が実行される。

mutable lambda

mutableの記述がないと6行目はコンパイルエラーになる。mutableのあるlambda式は非constメンバ関数、mutableのないlambda式はconstメンバ関数である。

0 件のコメント:

コメントを投稿