Quando si tratta di codice generico in C++, troverei molto utile un functor std::identity
(come std::negate
). C'è una ragione particolare per cui questo non è presente nella libreria standard?C'è una ragione per cui non c'è std :: identity nella libreria standard?
6
A
risposta
2
Poco dopo std :: identità è stata introdotta, i problemi cominciarono ad apparire, a partire da conflitti di pre-cpp98 definizioni di std :: identità appaiono come estensioni: https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/vrrtKvA7cqo Questo sito potrebbe dare un po 'più storia per esso.
+0
L'identità può essere utilizzata per impedire la deduzione degli argomenti del modello. Boost :: clamp usa questo trucco. Vedi anche https://stackoverflow.com/questions/41767240/what-is-stdidentity-and-how-it-isused. – gast128
Problemi correlati
- 1. Cosa c'è nella libreria standard Java a cui mancano Python?
- 2. Perché non c'è una funzione scanl nella libreria standard Haskell?
- 3. Qual è l'equivalente di boost :: make_transform_iterator nella libreria standard?
- 4. Qual è la ragione per `std :: make_tuple`?
- 5. PEP 257 assestamento docstring nella libreria standard?
- 6. C'è una ragione per cui Object.hashCode() è a 31 bit?
- 7. Libreria standard matura per C
- 8. È corretto lanciare eccezioni definite nella libreria standard C++?
- 9. affettare una fetta utilizzando la libreria standard
- 10. Perché non c'è nessun << nella libreria standard Haskell?
- 11. Metodi free-side nella libreria standard Java
- 12. boost :: alternativa opzionale nella libreria standard C++
- 13. Esiste una funzione virtuale pura nella libreria standard C++?
- 14. Esiste una funzione `flip` nella libreria standard OCaml?
- 15. Diagnosi EXC_BAD_INSTRUCTION nella libreria standard Swift
- 16. C'è una buona ragione per cui #region e #endregion non funzionano in F #
- 17. Libreria standard Intel (C++)
- 18. C'è una buona ragione per cui `deleteBy` non ha il suo tipo più generale?
- 19. Etichette libreria standard
- 20. Non ci sono specializzazioni di std :: hash per contenitori standard?
- 21. Libreria std C++ che collega con diversi standard C++
- 22. Come standard è std :: thread?
- 23. Funzione di libreria standard per creare una serie di indici il cui valore corrispondente è un numero dato
- 24. Qual è la ragione per cui un compilatore non considera ogni variabile come una variabile __block?
- 25. C'è qualche ragione per cui una stringa JS non sarebbe uguale a se stessa? (vedi foto)
- 26. C'è una ragione per cui Cassandra non ha il supporto geospaziale?
- 27. Esiste una ragione teorica di tipo più profonda per cui GHC non può inferire questo tipo?
- 28. C'è una ragione per cui non dovrei usare NVARCHAR in Sql Server?
- 29. Come trovo la ragione per cui EETypeLoadException è stata lanciata?
- 30. La libreria standard Python è veramente standard?
Era presente in bozze pre-C++ 11. IIRC, è stato usato per prevenire la deduzione degli argomenti del template in ['std :: forward'] (http://en.cppreference.com/w/cpp/utility/forward). A un certo punto, qualcuno ha realizzato che 'remove_reference' era necessario per' forward', che si occupava anche della parte di contesto non deducibile, e forse 'identity' non era più utilizzato da nient'altro, quindi è stato eliminato. – Praetorian
È interessante notare che alcune implementazioni in C++ sembrano utilizzare internamente un modello 'std :: _ Identity'. – JAB