いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

boost::function を読んでみた

気分が乗らなかったので^^;、変態といわれている(※誉め言葉) boost::function のソースコードを読んでみました。
…が、ぱっと見じゃぁ、何がしたいのかわかりませんでした。(爆 ^^;
とはいえ、頑張って読んだ結果、勉強になった事も有りまして…。

function を使うとき、↓こんな具合に書きますがー
boost::function<int (int)> cFunc;

この "int (int)" って何なのよ? と自分の中ではすごい疑問でした。 仮にこんなクラスに "int (int)" を適用した場合

template<typename T>
class A
{};

この場合、T ってなんなのよ? そして、どーやって、戻り値の型か引数の型とかを判別すればよいの? とかとか…。
今回は、後者のことについてメモを書いてみたり。

戻り値の型などの判別方法ですが、こんな感じのコードになっていました。

// class template function を宣言
template<typename T>
class function;

// 特殊化 (特別化…だっけ?^^;)
template<typename R, typename A0>
class function<R (A0)>;

// 特殊化
template<typename R, typename A0, typename A1>
class function<R (A0, A1)>;

なるほど
こうすれば、型が個別に取得できますな! これには、本当にビックリです!


やっぱり、c++の偉い人はすごいと思いました…。 同時に、自分はまだ青いなぁ…とも……。 うひー。^^;