2016-12-15 4 views
5

オブジェクトがstd::exception_ptrで、what()に電話したいと思いますが、これを行う方法がないようです(この回答で説明したように:How do I make a call to what() on std::exception_ptr)。std :: exception_ptrを再スローする以外の方法

インターネットで検索した後、再投げてstd::exception&にキャッチする以外は何もできないようです。

私は少し奇妙ですが、私はチェックしたいと思います:std::exception_ptr以外で何をして、それを再投げて期待の詳細を得るのですか?

は、残念ながら、C++

+0

あなたが何か他のことをするまで、例外処理を延期したいと思う場合に限り、私には分かります。 – NathanOliver

+0

[std :: exception \ _ptr]のwhat()を呼び出すにはどうしたらいいですか?(http://stackoverflow.com/questions/14232814/how-do-i-make-a-call-to- what-on-stdexception-ptr) – rustyx

+1

'std :: exception'から実際に継承された' exception_ptr'によって現在保持されている例外をどのように知っていますか? – Barry

答えて

2

のC++ 14のまたは他のバージョンの変更はありません、あります。 std::exception_ptrは、次の標準のみ保証:

18.8.5例外の伝搬

1型exception_ptrは、例外オブジェクトを参照するために使用することができます。

2 exception_ptrは、NullablePointer(17.6.3.3)の要件を満たさなければならない。

3 exception_ptr型の2つのNULLでない値は同等であり、同じ例外に対して を参照する場合にのみ等しく比較されます。

4 exception_ptrのデフォルトのコンストラクタは、その型のnull値を生成します。

5 exception_ptrは、暗黙的に任意の算術、列挙型、またはポインタ型に変換できません。

7例外競合の存在を判断するために、例外キューオブジェクト は、exception_ptrオブジェクト自体にのみアクセスして変更し、それらが参照する例外ではありません。

はまた、全くライブラリの実装によってサポートされている場合、(例えば、それをデリファレンスなど)オブジェクト上の他の操作を実行here

を指摘し、未定義の動作を引き起こします。

関連する問題