Запитання з тегом «perfect-forwarding»

4
Що означає T&& (подвійний амперсанд) в C ++ 11?
Я розглядав деякі нові функції C ++ 11, і я помітив, що це подвійний амперсанд у оголошенні змінних, як T&& var. Для початку, як називається цей звір? Я хотів би, щоб Google дозволив нам шукати такі розділові знаки. Що саме це означає? На перший погляд, це здається подвійним посиланням (як …

6
Які основні цілі використання std :: forward та які проблеми вона вирішує?
У ідеальній переадресації std::forwardвикористовується для перетворення названих посилань на rvalue t1та t2в неназвані посилання rvalue. Яка мета цього робити? Як би це вплинуло на викликану функцію, innerякщо ми залишимо t1& t2як lvalues? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
make_unique та ідеальне переадресація
Чому std::make_uniqueв стандартній бібліотеці C ++ 11 немає шаблону функцій? я знайшов std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); трохи багатослівний. Не було б наступне набагато приємніше? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Це newдобре приховує і лише один раз згадує тип. У будь-якому випадку, ось моя спроба реалізації make_unique: template<typename T, …


1
Як би один виклик std :: переслати всі аргументи у різноманітній функції?
Я просто писав загальну фабрику об'єктів і використовував мета-бібліотеку boost-препроцесора для створення варіативного шаблону (використовуючи 2010, і він їх не підтримує). Моя функція використовує посилання на rval і std::forwardробити ідеальну переадресацію, і це змусило мене задуматися ... коли C ++ 0X вийде, і у мене був стандартний компілятор, я б …

1
Чи можу я перерахувати-ініціалізувати std :: vector із ідеальним пересиланням елементів?
Я помітив, що ініталізація сукупного списку std :: vector виконує ініціалізацію копіювання, коли переміщення є більш застосовною. У той же час кілька emplace_backs роблять те, що я хочу. Я міг тільки придумати це недосконале рішення написання функції шаблону init_emplace_vector. Однак це оптимально лише для не явних однозначних конструкторів. template <typename …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.