Zastanawiam się, jakie jest pochodzenie semantyki przenoszenia w C++? W szczególności czy został wymyślony specjalnie dla tego języka, czy też było coś podobnego w innym języku (językach)? W tym drugim przypadku mógłbyś podać kilka referencji.
2 odpowiedzi
Wydaje się, że nie ma żadnego konkretnego przodka tej koncepcji. Geneza semantyki ruchu C++, jak wspomniano w pierwotna propozycja była dyskutowana na grupach dyskusyjnych:
Semantyka ruchów w różnych formach była dyskutowana na forach C++ (przede wszystkim comp.lang.c++.moderated) od lat.
Moim zdaniem są one ściśle powiązane z pojęciem l- i r-wartości w C++, które, jeśli się nie mylę, jest koncepcją czysto C++. Język, który nie ma l-wartości, r-wartości i ich nowych przyjaciół z C++11 nie potrzebuje semantyki przenoszenia w sposób, w jaki implementuje je C++.
Ogólnie rzecz biorąc, koncepcja przenoszenia rzeczy, a nie kopiowania, jest tylko podstawową koncepcją. Za każdym razem, gdy piszesz połączoną listę i „zamieniasz elementy”, po prostu zamieniając na nie wskaźniki, robisz „ruch”. Zasadniczo.
Możesz przeczytać "Propozycję dodania obsługi semantyki ruchu do języka C++", aby uzyskać więcej informacji na temat motywacji koncepcji, a także dlaczego wymaga to bezpośredniego wsparcia językowego, a nie implementacji przy użyciu obiektów bibliotecznych.
Podobne pytania
Nowe pytania
c++
C ++ to język programowania ogólnego przeznaczenia. Pierwotnie został zaprojektowany jako rozszerzenie C i ma podobną składnię, ale teraz jest to zupełnie inny język. Użyj tego tagu w przypadku pytań dotyczących kodu (który ma zostać) skompilowany za pomocą kompilatora C ++. Użyj znacznika specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardu [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] lub [C ++ 23] itp. .