Beim Umgang mit generischem Code in C++, würde ich einen std::identity
Funktor (wie std::negate
) sehr nützlich finden. Gibt es einen besonderen Grund, warum dies in der Standardbibliothek nicht vorhanden ist?Gibt es einen Grund, warum es nicht std :: identity in der Standardbibliothek gibt?
6
A
Antwort
2
Bald nach std :: Identität eingeführt wurde, begann Fragen zu erscheinen, mit Konflikten beginnen zu vorab cpp98 Definitionen von std :: Identität als Erweiterungen erscheinen: https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/vrrtKvA7cqo Diese Seite könnte ein wenig mehr Geschichte geben.
+0
Die Identität kann verwendet werden, um die Ableitung von Vorlagenargumenten zu verhindern. Boost :: clamp benutzt diesen Trick. Siehe auch https://stackoverflow.com/questions/41767240/what-is-stdidentity-and-how-it-is-used. – gast128
Verwandte Themen
- 1. Warum gibt es in der Haskell-Standardbibliothek keine Scanl-Funktion?
- 2. Gibt es einen Grund, warum JavaScript-Entwickler Array.push() nicht verwenden?
- 3. Warum gibt es keinen std :: copy_if Algorithmus?
- 4. Gibt es einen Grund, warum MicrosoftAjax.js nicht minimiert wird?
- 5. Gibt es einen Grund, System.Uri zu verwenden?
- 6. Gibt es einen Grund, warum bestimmte Websites keine Passwörter zulassen?
- 7. Gibt es einen Grund, PHP's exec() nicht zu benutzen?
- 8. Warum gibt es kein Std :: Protect?
- 9. Gibt es ein Tab-Äquivalent von std :: endl in der Standardbibliothek?
- 10. Gibt es einen Identitätskanal?
- 11. Gibt es einen Grund, das Zeichenfolgenmodul in Python zu importieren?
- 12. Gibt es eine "Flip" -Funktion in der OCaml-Standardbibliothek?
- 13. Gibt es einen Grund, warum jQuery.each nicht auf Array.forEach angewiesen ist, wenn es verfügbar ist?
- 14. Gibt es einen Grund, dass C99 keine Funktionsüberlastung unterstützt?
- 15. Gibt es einen Grund für die Abwertung der Shutdown-Methode?
- 16. Gibt es einen Grund, `new object(). Foo()` nicht zu verwenden?
- 17. Gibt es in der C++ - Standardbibliothek eine reine virtuelle Funktion?
- 18. Warum gibt es nicht int128_t?
- 19. Gibt es einen guten Grund für Javascript inline zu sein
- 20. Warum gibt es keinen Operator << für std :: unique_ptr?
- 21. Gibt es einen dereference_iterator in der STL?
- 22. Warum gibt es einen nicht gleich Operator in Python
- 23. Warum gibt es keine Duration.ofWeeks()?
- 24. Gibt es einen Grund, warum ich einen CALayer nicht außerhalb einer UIView-Klasse initialisieren kann?
- 25. Gibt es einen Grund, dass Cassandra keine geospatiale Unterstützung hat?
- 26. Gibt es einen Grund, verschachtelte Aufrufe von $ (jQuery) zu haben?
- 27. Warum gibt es keinen Reservierungskonstruktor für std :: string?
- 28. Gibt es öffentlich verfügbare SAML Identity Provider?
- 29. Warum gibt es in PHP PHP nicht?
- 30. Gibt es einen bestimmten Grund, warum verschachtelte Namespace-Deklarationen in C++ nicht zulässig sind?
Es war in Pre-C++ 11 Entwürfe vorhanden. IIRC, wurde verwendet, um Vorlage Argumentableitung in ['std :: forward '] (http://en.cppreference.com/w/cpp/utility/forward) zu verhindern. Irgendwo auf dem Weg wurde jemandem klar, dass 'remove_reference' für' forward' benötigt wurde, was auch für den nicht ableitbaren Kontext Teil sorgte, und vielleicht wurde 'identity' von nichts anderem mehr verwendet, so dass es gelöscht wurde. – Praetorian
Interessanterweise scheinen einige C++ - Implementierungen intern eine 'std :: _ Identity'-Vorlage zu verwenden. – JAB