На этом форуме периодически заявляют о том, что один из недостатков Ц++ — отсутствие локальных функций. Мало помощи, мол, и от локальных классов — для использования их в шаблонных функциях требуется соответствующее (-ая? -ий?) linkage, т. е. приходится объявлять такие вспомогательные классы вне функции. Но я давно уже пишу вот так:
int x[3] = { 0, 1, 2 };
void f()
{
struct Local
{
static int sq(int x)
{
return x * x;
}
};
std::transform(x, x + 3, x, &Local::sq);
},
и так даже работает.
Можно ли посмотреть на место в стандарте, регламентирующее поведение в такой ситуации? Так можно вообще?