Od § 17.6.4.9 ISO/IEC 14882: 2011 (E) (C++ 11):Czy implementacje C++ mogą zakładać, że dowolny parametr funkcji wartości odniesienia jest unikatowy?
Każdy z poniższych odnosi się do wszystkich argumentów do funkcji z definicją w C++ biblioteki standardowej, chyba że wyraźnie stwierdzono inaczej.
[wycinanie]
- Jeśli argument funkcji wiąże się z parametrem referencyjnym rvalue, implementacja może przyjąć, że ten parametr jest unikalnym odniesieniem do tego argumentu.
Ta specyfikacja dotyczy tylko standardowych funkcji biblioteki, ale wydaje się, że cały punkt referencji rvalue jest dla tego rodzaju założenia możliwe. Jeśli mam funkcję, która przyjmuje referencję rvalue i przekazuje ją (za pośrednictwem tymczasowego lub std::move
), czy implementacja może legalnie wykonywać optymalizacje, które zakładają, że jest wyjątkowa? Jeśli nie, to czy jakieś implementacje tak czynią?
Nie jestem pewien, twoje pytanie. Wydaje się, że odpowiedź jest właściwa w cytowanym tekście: "implementacja może zakładać, że ten parametr jest unikalny" –
Cytat odpowiada na standardowe funkcje biblioteki. Ale co z funkcjami zdefiniowanymi w samym programie? –