閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

C++で関数内関数

C++ は関数内関数をサポートしていませんが、ローカルクラスを使用する事ができるので、これを使って遠まわしに関数内関数を実現することができます。コードにすると以下のような感じ。

#include <iostream>

using namespace std;
int main(int, char*[])
{
  struct f
  {
    int operator()(int n)
    {
      return  n > 0 ? f()(n - 1) * n : 1;
    }
  };
  cout << f()(5) << endl;
}

兎角用途が限定されるような関数をフリー関数としてわざわざ定義したくない時には役立つようなそうでもないような。