Вопросы по теме 'perfect-forwarding'
обнаружение защищенных конструкторов (возможно, абстрактного) базового класса
Я экспериментирую с новыми функциями С++ 11. В моей настройке я бы очень хотел использовать наследующие конструкторы, но, к сожалению, пока ни один компилятор не реализует их. Поэтому я пытаюсь смоделировать такое же поведение. Я могу написать...
645 просмотров
schedule
04.11.2022
Идеальная переадресация на асинхронную лямбду
У меня есть шаблон функции, где я хочу сделать идеальную переадресацию в лямбду, которую я запускаю в другом потоке. Вот минимальный тестовый пример, который вы можете напрямую скомпилировать:
#include <thread>
#include <future>...
8167 просмотров
schedule
21.05.2023
std::forward без идеальной переадресации?
Совет по std::forward обычно ограничивается каноническим вариантом использования идеальной пересылки аргументов шаблона функции; некоторые комментаторы заходят так далеко, что говорят, что это единственное допустимое использование std::forward...
3000 просмотров
schedule
07.12.2023
Функторы вперед с минимальным копированием
Я хотел бы перенаправить вызов функтора и скопировать этот функтор только в случае крайней необходимости. Вот моя общая функция-оболочка и функтор:
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 просмотров
schedule
03.12.2022
Как передать 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 просмотров
schedule
07.06.2022
Идеальный захват идеального экспедитора (универсальная ссылка) в лямбде
Итак, у меня есть идеальный сервер пересылки, и я хочу соответствующим образом зафиксировать его в лямбда-выражении, чтобы R-значения копировались, а L-значения захватывались по ссылке. Однако простое использование std::forward не работает, о чем...
1152 просмотров
schedule
04.01.2023
Вариативные шаблоны и идеальная переадресация в определенный класс шаблонов
Я хочу реализовать идеальный конструктор пересылки в моем «классе myArgs», который должен участвовать только для специализаций myClassBase<> . Грубо говоря: вызовите этот конструктор для каждого варианта myClassBase<>
Но не...
83 просмотров
schedule
25.01.2023
С++ 11 лямбда-выражения и пакеты параметров
У меня практически та же проблема, что и в этом вопросе , однако, к сожалению, единственный опубликованный ответ теперь является мертвой ссылкой.
В частности, используя VS2013 Update 4, я пытаюсь скомпилировать следующий код, и он не работает...
1162 просмотров
schedule
24.11.2022
Идеальная переадресация этого указателя?
У меня есть следующий код:
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 просмотров
schedule
08.07.2023
что происходит в 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 просмотров
schedule
05.04.2023
Какова цель перегрузки ссылки 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 просмотров
schedule
26.12.2022