Przy pracy z kodem generycznym w C++, bardzo przydatny byłby funktor std::identity
(taki jak). Czy istnieje szczególny powód, dla którego nie ma tego w standardowej bibliotece?Czy istnieje powód, dla którego nie ma std :: identity w standardowej bibliotece?
6
A
Odpowiedz
2
Wkrótce po wprowadzeniu identyfikatora std :: identity zaczęły pojawiać się problemy, zaczynając od konfliktów na definicje std :: identity pojawiające się jako rozszerzenia: pre-cpp98: https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/vrrtKvA7cqo Ta strona może dać trochę więcej historii.
+0
Tożsamość może być używana do zapobiegania odliczaniu argumentów szablonu. Boost :: clamp używa tej sztuczki. Zobacz także https://stackoverflow.com/questions/41767240/what-is-stdidentity-and-how-it-is-used. – gast128
Powiązane problemy
- 1. Czy istnieje powód, dla którego std :: set nie ma funkcji front i back member?
- 2. Czy istnieje powód, dla którego domyślny modelowanie nie wiąże pól?
- 3. Czy istnieje odpowiednik C++ dla `` std :: mem :: drop` w bibliotece standardowej?
- 4. Dlaczego noexcept nie jest więcej używane w standardowej bibliotece?
- 5. Czy istnieje funkcja `flip` w standardowej bibliotece OCaml?
- 6. Dlaczego nie ma << w bibliotece standardowej Haskell?
- 7. Czy istnieje jakiś dobry powód, dla którego #region i #endregion nie działają w języku F #
- 8. Czy istnieje powód, dla którego nie można zdefiniować modyfikatora dostępu dla metody lub interfejsu?
- 9. std :: string :: zastąpienie standardowej implementacji?
- 10. Czy istnieje powód, dla którego nie możemy zapełnić typów danymi w DataKinds?
- 11. Dlaczego nie ma std :: inplace_merge_unique?
- 12. Czy istnieje workflow opcji standardowej w F #?
- 13. Czy istnieje bezpieczna alternatywa dla std :: equal?
- 14. Czy istnieje powód, dla którego python nie chce kompilować r '(\ s *) +'?
- 15. Czy istnieje obiektywny powód, dla którego nie mogę mieć krotki jednoczęściowej z etykietą elementu?
- 16. Czy istnieje powód, dla którego jQuery.each nie bazuje na Array.forEach, jeśli jest dostępny?
- 17. Czy istnieje powód, dla którego nie powinieneś mieszać ssh i inteligentnego dostępu http z git?
- 18. Czy istnieje jakiś techniczny/koncepcyjny powód, dla którego iOS nie obsługuje wiązań kakaowych?
- 19. Czy istnieje jakiś głębszy teoretyczny powód, dla którego GHC nie może wywnioskować tego typu?
- 20. Czy istnieje powód, dla którego min i max nie działa na polach bitowych
- 21. PEP 257 docstring trim w standardowej bibliotece?
- 22. Dlaczego nie ma algorytmu std :: copy_if?
- 23. Dlaczego nie ma std :: stou?
- 24. Czy istnieje powód, dla którego Google używa rozszerzenia cc zamiast cpp w swoich projektach open source?
- 25. Czy nie ma specjalizacji od std :: hash dla standardowych kontenerów?
- 26. Czy istnieje jakiś powód, dla którego nie należy używać narzędzia DoubleEndedIterator dla iteratorów, które nie obejmują wielu różnych czynności?
- 27. Czy istnieje powód, aby używać std :: int_fast32_t lub std :: int_fast16_t przez int w kodzie międzyplatformowym?
- 28. Czy istnieje funkcja logiczna (boolean) XOR w bibliotece standardowej C lub C++?
- 29. Diagnozowanie EXC_BAD_INSTRUCTION w bibliotece standardowej Swift
- 30. Dlaczego nie ma konstruktora rezerwującego dla std :: string?
Był obecny w wersjach przed wersją C++ 11. IIRC, został użyty do zapobieżenia odrzuceniu argumentu szablonu w ['std :: forward'] (http://en.cppreference.com/w/cpp/utility/forward). Gdzieś po drodze ktoś zdał sobie sprawę, że 'remove_reference' jest potrzebny dla' forward', która również zajęła się nieodwzajemnioną częścią kontekstową, a może 'identity' nie była już używana przez nic innego, więc została odrzucona. – Praetorian
Co ciekawe, niektóre implementacje C++ wydają się używać wewnętrznego szablonu 'std :: _ Identity'. – JAB