週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
C++で関数オブジェクトを作ってそれを渡して云々というコードを書いていると、
> tritest.cpp(89) : error C2064: 1 引数を取り込む関数には評価されません。
>    tritest.cpp(87): クラス テンプレートのメンバ関数 'void hogehoge'のコンパイル中
何故、何故unary_functionが関数に評価されないんだ。おかしいだろう。

と30分くらい悩みました。

そういえば継承による部分型多相(<-で良いんでしょうか呼び方は。全く勉強していないんですが) はC++ではポインタとかを使わないとやってくれなかったことを思い出しました。しかし関数オブジェクトは普通コピー渡しに実装していた覚えもあります。理由は忘れました。

とりあえずalgorithmファイルを見て、どう書いたらよいかを復習。

おお、template<typename FN>で受けるのが正解でした。unary_function関係ないし。

結論
C++の関数オブジェクトを用いる関数は、テンプレートで関数オブジェクトを引き受けます。そんな話は関数オブジェクトを知っている時点で知っているはずですが、Haskell脳になるとそんなことも忘れてしまいます。
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/14-b4367047
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。