Warum ist es schlecht, einen lokalen Funktor zu haben?

7

Zum Beispiel: Was ist falsch daran, den Klassenverdoppler innerhalb der Hauptfunktion zu deklarieren, wenn das Prädikat nur einmal verwendet wird?

%Vor%     
aCuria 03.01.2011, 08:20
quelle

2 Antworten

14

Das Problem mit dieser Konfiguration besteht darin, dass Sie zumindest in C ++ 03 keinen lokalen Funktor als Vorlageargument verwenden können, da keine externe Verknüpfung vorhanden ist. Dies bedeutet, dass der oben genannte Code technisch gesehen nicht legal ist. Allerdings beheben sie dies in C ++ 0x, da es eine ziemlich dumme Einschränkung ist, und da VS2010 rudimentäre C ++ 0x-Unterstützung hat, ist der obige Code völlig in Ordnung.

Kurz gesagt, die Antwort auf Ihre Frage ist, dass nichts falsch daran ist, wenn Sie C ++ 0x-kompatible Compiler verwenden, aber ansonsten sollten Sie dies unterlassen, um die Cross-Compiler-Kompatibilität zu maximieren.

>     
templatetypedef 03.01.2011, 08:23
quelle
5
  • Es ist illegal vor C ++ 0x
  • In C ++ 0x gibt es eine bessere Lösung (lambdas / closures)

In beiden Fällen sollten Sie also eine andere Lösung verwenden.

    
Konrad Rudolph 03.01.2011 10:05
quelle

Tags und Links