Использование локальных классов с алгоритмами STL

Я всегда задавался вопросом, почему вы не можете использовать локально определенные классы в качестве предикатов для алгоритмов STL.

В вопросе:Подход алгоритмов STL, лямбда, локальные классы и другие подходыBubbaT упоминает, что говоритПоскольку стандарт C ++ запрещает использование локальных типов в качестве аргументов'

Пример кода:

int main() {
   int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
   std::vector<int> v( array, array+10 );

   struct even : public std::unary_function<int,bool>
   {
      bool operator()( int x ) { return !( x % 2 ); }
   };
   std::remove_if( v.begin(), v.end(), even() ); // error
}

Кто-нибудь знает где в стандарте ограничение? Каково обоснование для запрета местных типов?

РЕДАКТИРОВАТЬ: Начиная с C ++ 11, разрешено использовать локальный тип в качестве аргумента шаблона.

Ответы на вопрос(2)

Ваш ответ на вопрос