Jestem ciekawy co do czasu wyszukiwania, że trwa połączenie std::get<>
na std::tuple<>
. Niektóre krótkie wyszukiwania (w tym strony z informacjami, które zwykle zawierają te informacje) nie przyniosły rezultatów.Efektywność std :: get z std :: tuple
Moja początkowa intuicja (i strach) jest to, że struktura rekurencyjne krotki (jeśli jest on zaimplementowany jako zmiennej liczbie argumentów szablonu) doprowadziłoby do dostać wymagające kolejność N wyszukiwań (A wezwanie do get<3>(t)
patrząc jak t.rest().rest().first()
. Jestem Potem znowu nadzieję, że jestem daleko tutaj ...
, to mam nadzieję, że kompilator będzie w stanie zoptymalizować to bezpośrednio powrócić poprawne przesunięcie bez obciążania N połączeń.
Zasadniczo co chcę : czy istnieje określona gwarancja w środowisku wykonawczym? czy to ogranicza implementację std::tuple
?
Odpowiednią sekcją Standardu jest tutaj ** 1.9 Wykonanie programu [wstęp.roztwór] * * "1 Opisy semantyczne w niniejszej Normie Międzynarodowej definiują sparametryzowaną niedeterministyczną maszynę abstrakcyjną, która nie nakłada wymogu na strukturę zgodnych implementacji, w szczególności nie muszą one kopiować ani emulować struktury abstrakcyjnej maszyny. są wymagane do emulowania (tylko) obserwowalnego zachowania abstrakcyjnej maszyny, jak wyjaśniono poniżej. " – TemplateRex