C++ では、直接は関数内関数定義は使えないが、関数内クラス宣言を使うと近いものができる。
同じ部分コードを何度も記述しないために、関数内関数は結構使えると思うのだが、いちいち関数内クラス宣言のために、struct Nanka { }; とか書くのがうっとうしいところ。もっとスマートな方法がありそうな気がする。
返り値がないなら、コンストラクタでやってしまってもいいのかも。例外が内部で発生した場合の対応がなんとなく不安なので、個人的にはあまり使わないのだが。
void testFunc() { struct util { static void func(int a) { cout << a << "\n"; } }; util::func(1); util::func(10); ... }
あ、関数オブジェクト使えばいいのか。
void testFunc() { struct { void operator()(int a) const { cout << a << "\n"; } } coutNum; coutNum(1); coutNum(10); ... }