Вопросы по теме 'perfect-forwarding'
идеальная пересылка для lvalues
У меня есть служебная функция, которая выполняет итерацию по кортежу и для каждого элемента вызывает функцию с этим элементом и, наконец, вызывает другую функцию с результатом всех элементов кортежа.
Чтобы лучше проиллюстрировать:
Существует...
248 просмотров
schedule
09.09.2021
Слайды CppCon Perfect Forwarding от Herb Sutter
Мне сложно понять пару моментов, касающихся варианта идеальной переадресации, предложенного Хербом Саттером в его презентации " Назад к основам! Основы современного стиля C ++ " (@ 1: 15: 00) на CppCon 2014. Три соответствующих слайда ( вот слайды...
620 просмотров
schedule
05.10.2021
В каком случае всегда используется lvalue для доступа к члену ссылочного типа?
Почему не следует применять правило для доступа к членам класса с выражением объекта xvalue [expr] /7.3 к ссылочным типам?
Вместе с [expr.ref] / 4
«Если объявлено, что E2 имеет тип« ссылка на T », тогда E1.E2 - это lvalue; тип E1.E2 - T.»...
98 просмотров
schedule
03.10.2021
Подробно объясните std :: forward
Может кто-нибудь подробно объяснит мне, как работает std::forward . Как это определение кода и как он работает. Также, если возможно, вы можете показать, как работает функция и что она делает для ее работы. Объясните это как можно подробнее.
Вот...
42 просмотров
schedule
28.11.2021
Я до сих пор не могу понять, зачем нам нужен шаблон для идеального fwd
У меня есть этот код: (живой, например: https://godbolt.org/z/js1qK9hd1 )
struct big_class
{
std::string s1;
std::string s2;
std::string s3;
std::string s4;
std::string s5;
std::string s6;
std::string s7;
};
void...
61 просмотров
schedule
10.10.2021
make_unique и идеальная пересылка
Почему в стандартной библиотеке C ++ 11 нет шаблона функции std::make_unique ? я нахожу
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
немного многословно. Разве следующее не было бы лучше?
auto p =...
70139 просмотров
schedule
18.02.2022
Есть ли разница между универсальными ссылками и ссылками пересылки?
Аргумент этой функции будет привязан к ссылке rvalue:
void f(int && i);
Однако аргумент этой функции будет привязан либо к ссылке rvalue, либо к ссылке lvalue:
template <typename T>
void f(T && t);
Я часто...
18715 просмотров
schedule
21.02.2022
Почему конструктор перемещения вызывается дважды при передаче временных функций функции потока?
В приведенном ниже коде я не мог понять, почему конструктор перемещения класса вызывается дважды, учитывая, что моя функция потока принимает аргумент по ссылке rvalue, и поэтому я надеялся, что конструктор перемещения будет вызываться только один раз,...
172 просмотров
schedule
04.03.2022
Нужно ли мне улучшать прямые аргументы в тех случаях, когда аргументы используются непосредственно в функции?
Я подумал про себя, что мне не нужен std::forward<T>(arg); в моей функции, потому что я не передавал аргумент другой функции, я использовал его напрямую. Однако тогда я подумал, что даже если я использую его напрямую, например, назначая его...
53 просмотров
schedule
16.03.2022
Как передать функцию и пакет параметров в лямбду, в конструктор std::thread?
Я хочу реализовать «прерываемый» поток на С++ 11 в соответствии с этим ответом .
Я параметризовал свой прерываемый класс, чтобы он мог обернуть любой класс потока, который имеет аналогичный конструктор (предназначенный для std::thread, но также...
998 просмотров
schedule
28.03.2022
Сокращение для std::move
Было бы плохой практикой для некоторого класса S перегружать унарный operator + (или, может быть, operator * для классов, не связанных с указателями) следующим образом?
struct S { S && operator + () & noexcept { return...
170 просмотров
schedule
07.06.2022
Как заставить компилятор предпочесть перегрузку метода const в С++?
У меня есть функция-член С++ класса с перегрузкой const и не- const .
Class Example {
public:
int const & Access() const;
int & Access();
[...]
};
Я хочу, чтобы константная версия была предпочтительнее, поскольку...
328 просмотров
schedule
18.06.2022
Идеальная пересылка ссылок с помощью std::bind внутри вариативного шаблона
Я наткнулся на ошибку в своем коде, которую я проследил до того факта, что аргументы для std::bind "... никогда не передаются по ссылке, если только они не заключены в std::ref или std::cref ".
Что я имею
У меня есть шаблон функции,...
839 просмотров
schedule
26.06.2022
Пересылка аргументов в конструктор вместе с дополнительными аргументами
Я пытаюсь сделать следующее:
template<typename T, typename Handle, typename... Args>
bool MyClass::CreateArray(T *&array_, Handle *&handle_, const std::string&
handleName_, int64_t size_, int64_t...
65 просмотров
schedule
09.08.2022
Вложение подвыражений в шаблоны выражений
Мы пишем библиотеку шаблонов выражений для обработки операций со значениями с разреженным вектором градиента (автоматическое дифференцирование первого порядка). Я пытаюсь выяснить, как сделать возможным вложение подвыражений по ссылке или значениям в...
119 просмотров
schedule
11.08.2022
Идеальная переадресация на лямбду, полученную в качестве аргумента
class Frame<P> представляет изображение с пикселями типа P . Алгоритм, который перебирает его пиксели, нетривиален из-за нескольких гибких возможностей в базовом формате буфера данных. Поэтому я хотел бы избежать дублирования кода в...
60 просмотров
schedule
17.08.2022
std :: forward и ref-квалификаторы для функций-членов
Я был в ситуации, когда я использовал std::forward везде, где у меня была ссылка на переадресацию, и мне было интересно, было ли что-то из этого ненужным или даже неправильным. Например, наличие std::forward в std::begin() вызове.
Из-за...
258 просмотров
schedule
19.09.2022
Почему не `const int ci = 2; std::forward‹int›(ci);` работает и как это исправить/обойти?
Простой вопрос: почему следующее не работает (подразумевая копию ci )?
#include <utility>
int main(){
const int ci = 2;
std::forward<int>(ci);
}
prog.cpp: в функции 'int main()': prog.cpp:6:23: ошибка: нет...
3321 просмотров
schedule
29.09.2023
Пересылка аргументов
У меня есть конструкция в виде:
template<class T>
void do_something_with_it(T*&& ptr)
{
//here I can do something with this ptr
}
template<class T,class... Args>
void do_something_with_them(T*&&...
366 просмотров
schedule
26.12.2022
Должен ли параметр шаблона T преобразовываться в T&, когда функция принимает аргумент T&& и получает lvalue?
Я пытаюсь понять идеальную переадресацию на C++, поэтому я написал следующий быстрый и грязный фрагмент кода, чтобы проверить это.
class CValue
{
public:
CValue(int i) :
m_i(i)
{
printf("Default constructor called!\r\n");...
271 просмотров
schedule
01.04.2023