0

重複の可能性:
STL アルゴリズムでのローカル クラスの使用

ローカルで定義された関数オブジェクトを STL 関数に渡そうとしていますが、機能しません。世界のどこで、これが可能であってはならないと宣言されていますか? それは私にはかなり魅力的に見えます!

失敗するコードは次のとおりです。

int main() {
  std::vector<int> v;
  struct gen { int operator()(){return 4;} };
  std::cout<<gen()()<<std::endl; // works
  std::generate_n(std::back_inserter(v),4,gen()); // fails
}

ちなみに、gen_s が構造体だからではなく、gen_s::gen が静的関数だからです。ステートレス ジェネレーターは何に使用されるので、これはあまりクールではありません。

std:vector<int> v;
struct gen_s { static int gen() { return 4; };
std::generate_n(std::back_inserter(v),5,gen_s::gen);

では、ローカルに定義された関数オブジェクトはどうでしょうか?

4

0 に答える 0