Czy mają na myśli to samo?
Universal reference było określenie Scott Meyers utworzono w celu opisania koncepcji przy odniesienie RValue parametrowi szablonu CV bez zastrzeżeń, która może być wyprowadzona albo jako wartości lub lwartością odniesienia.
W tym czasie standard C++ nie miał specjalnego terminu, co było niedopatrzeniem w C++ 11 i utrudnia nauczanie. Ten nadzoru została usunięta przez N4164, które dodaje się następującą definicję [temp.deduct]:
odniesienie przekazywanie jest odniesienie RValue parametrowi szablonu CV bez zastrzeżeń. Jeśli P
jest odniesieniem do przekazywania, a argumentem jest l-wartość, zamiast "A" odejmowany jest typ "odniesienie do wartości l".
W związku z tym dwie oznaczają tę samą rzecz, a obecny standardowy termin C++ jest odniesieniem do przekazywania. Artykuł sam określa, dlaczego "odniesienie do przekazywania" jest lepszym terminem niż "odwołanie uniwersalne".
Czy jest to tylko odwołanie do przekazywania, jeśli treść funkcji wywołuje std::forward
?
Nie, to, co robisz z odniesieniem do przekazywania, nie ma znaczenia dla nazwy. Odniesienie spedycja pojęcie odnosi się po prostu do tego, jak typ T
jest wyprowadzany w:
template <class T> void foo(T&&); // <==
To nie musi być następnie przekazane.
Zobacz https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers dla niektórych materiałów podstawowych. –
@SamVarshavchik Czy rzeczywiście przeczytałeś jedno z tych pytań lub tego bloga? – Barry