プログラミング生放送勉強会 第17回@品川 でセッションやってきました。
会場およびニコ生からのご清聴に感謝いたします。
んで、ひとつだけふぉろー。
C++11で新たに追加されたasync/future について:
// 1+2 を非同期に求める
future<int> f = async([](int x, int y) { return x+y;}, 1, 2);
cout << f.get() << endl; // スレッドの終了を待ち、結果を取り出す
なんてなコードを紹介しました。
ここで質問:「future<int> f のとこ、型推論できますか?」
こたえ: できます。
ISO:N3376によりますと、asyncのプロトタイプは以下のとおり:
template <class F, class... Args>
future<typename result_of<typename decay<F>::type(typename decay<Args>::type...)>::type>
async(F&& f, Args&&... args);
なんやグチャグチャしてますが、要するにayncはfuture<...> を返すので、そのまんま型推論されます。
なので、
auto f = async([](int x, int y) { return x+y;}, 1, 2);
cout << f.get() << endl; // スレッドの終了を待ち、結果を取り出す
はおっけぃですし、
auto plus = [](int x, int y) { return x+y;};
cout << async(plus,1,2).get() << endl; // スレッドの終了を待ち、結果を取り出す
これも無問題っした。
※ 9/1のわんくま横浜勉強会ではプロ生のリピートセッションやるます。
※ つっても僕は毎回アドリブなのでナカミころっと違うことになるかもです。