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.

5
vitaut 15 luty 2012, 00:37

2 odpowiedzi

Najlepsza odpowiedź

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.

6
Lightness Races in Orbit 15 luty 2012, 00:54

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.

1
André Caron 15 luty 2012, 00:47