C++14とC++1yの新しいペーパーが公開された

isocpp.orgで先行公開されたペーパーを紹介。


New paper: N3711, Task Groups As a Lower Level C++ Library Solution To Fork-...—Laksberg, Sutter


並列アルゴリズムの実装で使う、タスクグループの低レイヤークラスの提案。

template <typename Func1, typename Func2>
void parallel_invoke(const Func1& f1, const Func2& f2)
{
    task_group tg(/* ... */);
    tg.run(f1);
    tg.run_and_wait(f2);
}

New paper: N3716, A printf-like Interface for the Streams Library (revision 1)—Zhihao Yuan


printfのようなフォーマットを使えるストリームライブラリの提案。
Boost.Formatの可変引数テンプレート版。%dや%dのような、従来のprintfがもつ型フォーマットの他に、Boost.Formatが持っている%1%(第1引数を意味する)のような位置プレースホルダを持つ。

cout << putf("%2%: %1%\n", 42, "The answer"); 

New paper: N3708, A proposal to add coroutines to the C++ standard library—O Kowalke, N Goodspeed


コルーチンライブラリの提案。コルーチンがpush_typeとpull_typeで分かれていて、データを提供するコンテキストと、データを受け取るコンテキストで、型の使い分けをわかりやすくしているのが特徴。

std::coroutine<int>::pull_type source( // コンストラクタ呼び出しは、コルーチン関数に入る
  [&](std::coroutine<int>::push_type& sink) {
    sink(1); // メインコンテキストに {1} を返す
    sink(1); // メインコンテキストに {1} を返す
    sink(2); // メインコンテキストに {2} を返す
    sink(3); // メインコンテキストに {3} を返す
    sink(5); // メインコンテキストに {5} を返す
    sink(8); // メインコンテキストに {8} を返す
  });

while (source) { // コルーチンのコンテキストが有効かどうか確認
  int ret = source.get(); // データにアクセスする
  source(); // コルーチン関数にコンテキストを切り替える
}


New paper: N3733, ISO/IEC CD 14882, C++ 2014, National Body Comments—Barry Hedquist

C++14の仕様に対する、各国からのコメント。
日本からはとくにありません。