11

への参照を使用してプロミスを使用する方法についていくつかの場所でcopy_exception見つけましたが、現在の FDIS では見つけることができません。set_exception()それらのブログ以降の使用方法に別の方法はありますか?

たとえば、ここ

void asyncFun(promise<int> intPromise)
{
    int result;
    try {
        // calculate the result
        intPromise.set_value(result);
    } catch (MyException e) {
        intPromise.set_exception(std::copy_exception(e));  // <- copy
    }
}

std::current_exception() 私はここで見つける。

catch(...)
{
    p.set_exception(std::current_exception());
}

したがって、私の質問:

  • current_exception()" " をキャッチできなくても、常に を使用する必要があり...ますか?
  • それとも、新しい別の名前がありcopy_exceptionますか?
4

1 に答える 1

15

には別の名前がありcopy_exceptionます。 copy_exceptionは、標準化プロセスの後半で、実際に行ったことの混乱を理由に名前が変更されました。

template<class E>
   exception_ptr make_exception_ptr(E e) noexcept;

効果:exception_ptrのコピーを参照するオブジェクトを 作成しますe

設定しようとしている例外に応じて、またはのいずれmake_exception_ptrかを使用しても問題ありません。current_exception

于 2011-09-25T15:04:27.750 に答える