プログラムを書いていて、ハマることあるよね。
ハマらなければ、スーパープログラマーなんだけどね
今回ハマったのが、std::function
まあ関数ポインタみたいなもんでしょ
って軽い感じで考えていました。
サクッと実装しようとしたら、STLの長ったらしいコンパイルエラー・・・
#include <list>
#include <iostream>
#include <functional>
int main()
{
std::function<int(int)> f, g;
std::list<std::function<int(int)>> li;
li.push_back(f);
li.push_back(g);
li.remove(f);//こいつがNGなわけだ
}
なになに、「 no match for ‘operator==’ (operand types are ‘std::function・・・」
いやいや・・std::functionに==あるっしょと思ったけど・・
#include <list>
#include <iostream>
#include <functional>
int ident(int x) { return x; }
int main()
{
std::function<int(int)> f, g;
g = ident;
if (f == g) {//やっぱりNG
std::cout << "ok" << std::endl;
}
}
はい、だめです。できません。
stackoverflowの意見
公式が無理って言ってるから無理なんでしょう
ハマった挙句、ダメだったのでしばらく散歩します。