Вопросы по теме 'perfect-forwarding'

обнаружение защищенных конструкторов (возможно, абстрактного) базового класса
Я экспериментирую с новыми функциями С++ 11. В моей настройке я бы очень хотел использовать наследующие конструкторы, но, к сожалению, пока ни один компилятор не реализует их. Поэтому я пытаюсь смоделировать такое же поведение. Я могу написать...
645 просмотров

Идеальная переадресация на асинхронную лямбду
У меня есть шаблон функции, где я хочу сделать идеальную переадресацию в лямбду, которую я запускаю в другом потоке. Вот минимальный тестовый пример, который вы можете напрямую скомпилировать: #include <thread> #include <future>...
8167 просмотров

std::forward без идеальной переадресации?
Совет по std::forward обычно ограничивается каноническим вариантом использования идеальной пересылки аргументов шаблона функции; некоторые комментаторы заходят так далеко, что говорят, что это единственное допустимое использование std::forward...
3000 просмотров

Функторы вперед с минимальным копированием
Я хотел бы перенаправить вызов функтора и скопировать этот функтор только в случае крайней необходимости. Вот моя общая функция-оболочка и функтор: template <typename F> void wrapper (F func) { func (); } struct Functor { Functor() {}...
345 просмотров
schedule 21.06.2022

C ++ 11 идеальная пересылка и сворачивание ссылок
Рассмотрим этот код: template<typename T> void foo(T&& param){ //In this case && is called universal reference std:string tmp = std::forward<string>(param); } У меня вопрос: если универсальный ссылочный тип...
937 просмотров

Как передать std::bind как универсальный ссылочный тип?
Как я понимаю, std::bind отлично перенаправляет как вызываемый объект, который он обертывает, так и аргументы этому вызываемому объекту; возвращаемый объект std::bind сам является перемещаемым и/или копируемым, в зависимости от того,...
826 просмотров
schedule 26.06.2022

Передать по значению и переместить или два метода [дубликаты]
Предположим, у меня есть следующий класс, в котором есть метод set_value . Какая реализация лучше? class S { public: // a set_value method private: Some_type value; }; Передайте по значению, затем переместите void...
830 просмотров

Идеальный захват идеального экспедитора (универсальная ссылка) в лямбде
Итак, у меня есть идеальный сервер пересылки, и я хочу соответствующим образом зафиксировать его в лямбда-выражении, чтобы R-значения копировались, а L-значения захватывались по ссылке. Однако простое использование std::forward не работает, о чем...
1152 просмотров
schedule 04.01.2023

Вариативные шаблоны и идеальная переадресация в определенный класс шаблонов
Я хочу реализовать идеальный конструктор пересылки в моем «классе myArgs», который должен участвовать только для специализаций myClassBase<> . Грубо говоря: вызовите этот конструктор для каждого варианта myClassBase<> Но не...
83 просмотров

С++ 11 лямбда-выражения и пакеты параметров
У меня практически та же проблема, что и в этом вопросе , однако, к сожалению, единственный опубликованный ответ теперь является мертвой ссылкой. В частности, используя VS2013 Update 4, я пытаюсь скомпилировать следующий код, и он не работает...
1162 просмотров

Идеальная переадресация этого указателя?
У меня есть следующий код: template<typename T> class Dispatcher { public: void operator()(T&& v) {} }; struct S { Dispatcher<S*> dispatcher; void test() { dispatcher(this); } }; И это дает...
60 просмотров
schedule 31.05.2022

Нет соответствующей функции std::forward с лямбда-выражениями
Рассмотрим следующий код, вдохновленный ответом Барри на этот вопрос: // Include #include <tuple> #include <utility> #include <iostream> #include <type_traits> // Generic overload rank template <std::size_t N>...
2138 просмотров

что происходит в std :: function operator () и std :: forward?
Я смотрел реализацию std::function и ее вызов operator() template<typename Ret, typename... ArgTypes> Ret function< Ret (ArgTypes...)>::operator()(ArgTypes...args) const { // some stuff return invoker(functor,...
541 просмотров

Какова цель перегрузки ссылки rvalue std::forward()?
Я экспериментирую с Perfect Forwarding и обнаружил, что std::forward() нужны две перегрузки: Перегрузка №. 1: template <typename T> inline T&& forward(typename std::remove_reference<T>::type& t) noexcept {...
559 просмотров
schedule 17.05.2023

Идеальная переадресация с определенным типом
При написании поточно-ориентированной оболочки std::stack я сделал следующие две перегрузки для push : void push(const value_type& value) { auto guard = std::scoped_lock{_mutex}; _stack.push(value); _cv.notify_one(); } void...
58 просмотров
schedule 09.11.2022

Правила свертывания ссылок не применяются должным образом?
Я освежаю свою память о том, как совершенная переадресация работает в C++. Я понимаю, что вызов std::forward вынужден предоставлять явный параметр шаблона по какой-то причине (т.е. при работе со ссылками rvalue, которые на самом деле являются...
60 просмотров
schedule 18.05.2022

Как передать значения кортежа инициализатору члена?
Мне нужно переслать значения кортежа инициализатору члена: struct Struct { Member1 member1; Member2 member2; template<typename Tuple1, typename Tuple2> Struct( Tuple1&& tuple1, Tuple2&& tuple2 ) :...
62 просмотров