2010年10月01日

例外のcatch時に変換関数は適用されない

いやようするに、

#include <iostream>
#include <stdexcept>
using namespace std;

struct C {
	operator runtime_error() {
		return runtime_error("original description");
	}
};

int main()
{
	try {
		throw C();
	} catch(runtime_error &) { // (1)ここには来ないで……
		cout << "catch std::runtime_error!" << endl;
	} catch(...) { // (2)ここに来る
		cout << "catch some type..." << endl;
	}
}

てな感じで、変換関数が定義されたクラスをthrowしても、catchする時にはそれは適用されない。らしい。驚いた。

なんかあんまり直感的でないなー。なんでこうなっているんだろう。

ラベル:C++
posted by 天井冴太 at 03:13| Comment(0) | TrackBack(0) | Study | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。