Die Verwendung lokaler Klassen mit der STL-algorithmen

Ich habe mich immer gefragt, warum Sie nicht verwenden können lokal definierten Klassen von Prädikaten, um die STL-algorithmen.

In der Frage: Nähert sich die STL-algorithmen, lambda, lokale Klassen und andere Ansätze, BubbaT erwähnt, sagt, dass " Da der C++ - standard verbietet lokalen Typen als Argumente verwendet werden'

Beispiel-code:

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
}

Weiß jemand, wo in der Norm die Einschränkung? Was ist der Grund für die Nichtanerkennung lokalen Typen?


BEARBEITEN: Seit C++11, es ist legal zu verwenden, einen lokalen Typ als template-argument.

InformationsquelleAutor David Rodríguez - dribeas | 2009-04-12

Schreibe einen Kommentar