Pytania otagowane jako perfect-forwarding


6
Jakie są główne cele używania std :: forward i jakie problemy rozwiązuje?
W doskonałym przekazywaniu std::forwardsłuży do konwersji nazwanych odwołań do wartości t1i t2do nienazwanych odwołań do wartości. Jaki jest tego cel? Jak wpłynęłoby to na wywoływaną funkcję inner, gdybyśmy opuścili wartości t1& t2jako wartości? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
make_unique i idealne przekazywanie
Dlaczego std::make_uniquew standardowej bibliotece C ++ 11 nie ma szablonu funkcji? znajduję std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); trochę gadatliwy. Czy poniższe rzeczy nie byłyby o wiele ładniejsze? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); To newładnie ukrywa i wspomina o typie tylko raz. Tak czy inaczej, oto moja próba wdrożenia make_unique: …


1
Jak można wywołać std :: forward dla wszystkich argumentów w funkcji wariadycznej?
Właśnie pisałem generyczną fabrykę obiektów i korzystałem z meta-biblioteki preprocesora boost, aby stworzyć szablon wariadyczny (używając 2010 i nie obsługuje ich). Moja funkcja korzysta z referencji rval i std::forwardaby wykonać doskonałe przekazywanie, i pomyślałem ... kiedy pojawi się C ++ 0X i mam standardowy kompilator, zrobiłbym to z prawdziwymi szablonami …

1
Czy mogę zainicjować listę std :: vector z doskonałym przekazywaniem elementów?
Zauważyłem, że zbiorczą listę initalization std :: vector wykonuje skopiować inicjalizacji gdy ruch jest bardziej dotyczy. W tym samym czasie wiele lokacebacków robi to, co chcę. Mogłem tylko wymyślić to niedoskonałe rozwiązanie pisania funkcji szablonu init_emplace_vector. Jest to jednak optymalne tylko dla nieprecyzyjnych konstruktorów pojedynczej wartości . template <typename T, …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.