関数内部に関数を定義する方法

以下の通り

 // 関数内関数イディオム
 void inner_function_idiom()
 {
   struct local
   {
     static void square(int x) { std::cout << x * x << std::endl; }
   };
   typedef std::vector vecint;
   vecint vi;
          vi.push_back(1);
          vi.push_back(2);
   std::for_each(vi.begin(), vi.end(), local::square);
 }