読者です 読者をやめる 読者になる 読者になる

とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

RAIIのために一時オブジェクト+ラムダを使う小ネタ

RAII のために作るオブジェクトに名前を付けるのが面倒な事ありませんか? *1
一時オブジェクトを使うと名前を付けずにすむのですが,一時オブジェクトの生存期間中にできることって,今まで限られていましたよね。

class raii{};
void f(){}

int main()
{
 raii(), f(); // OK.
 // NG.
 raii(),
  for(int i = 0; i != 10; ++i)
   f();
}

C++0xのラムダを使えば,こんな制限は無くなると気付きました。

class raii{};
void f(){}

int main()
{
 // OK.
 raii(), []{
  for(int i = 0; i != 10; ++i)
   f();
 }();
}

便利かも?

*1:例えばboost::progress_timerとかmutexの類とか