std::for_each
- шаблон функции;одним из параметров шаблона является тип аргумента функции.
Вы не можете использовать локальный тип в качестве аргумента шаблона.Это просто ограничение на данный момент в языке.В следующей версии C ++, C ++ 0x это ограничение снято, поэтому вы можете использовать локальные типы в качестве аргументов шаблона.
Visual C ++ 2010 уже поддерживает использование локальных классов в качестве аргументов шаблона;Поддержка в других компиляторах может отличаться.Я предполагаю, что любой компилятор, который поддерживает лямбды C ++ 0x, также будет поддерживать использование локальных классов в качестве аргументов шаблона (это может быть не совсем верно, но это будет иметь смысл).