Вопросы по теме 'forwarding-reference'
Аргумент lvalue предпочитает ссылочный параметр lvalue универсальной ссылке?
Играя с универсальными ссылками, я наткнулся на случай, когда clang и gcc расходятся во мнениях относительно разрешения перегрузки.
#include <iostream>
struct foo {};
template<typename T>
void bar(T&) { std::cout << "void...
364 просмотров
schedule
30.05.2022
Какое правильное ограничение enable_if для идеального установщика переадресации?
Назад к основам! Презентация Essentials of Modern C++ на CppCon обсудила различные варианты передачи параметров и сравнила их производительность с простотой написания/обучения. «Расширенный» вариант (обеспечивающий наилучшую производительность во...
1544 просмотров
schedule
21.11.2022
Проблемы с универсальной ссылкой условного типа
Итак, у меня есть функция, которую я использую для проверки значений и создания исключения, если значение недопустимо, в противном случае возвращаю значение обратно в том виде, в котором оно было получено. Я пытаюсь обобщить эту рутину с помощью...
260 просмотров
schedule
11.09.2022
Когда я должен std::forward вызывать функцию?
Фрагмент кода, который я видел в Effective Modern C++ , имеет умную реализацию инструментального обоснования для создания функция таймера :
auto timeFuncInvocation =
[](auto&& func, auto&&... params)
{
start...
3030 просмотров
schedule
04.05.2022
auto&& переменная не является ссылкой на rvalue
Почему auto&& не является ссылкой на rvalue?
Widget&& var1 = Widget(); // rvalue reference
auto&& var2 = var1; //var2 not rvalue reference
ниже приведен справочный пример rvalue
void f(Widget&& param); // rvalue...
790 просмотров
schedule
11.12.2022
Почему std::forward возвращает static_cast‹T&&›, а не static_cast‹T›?
Пусть функция с именем Y перегружается:
void Y(int& lvalue)
{ cout << "lvalue!" << endl; }
void Y(int&& rvalue)
{ cout << "rvalue!" << endl; }
Теперь давайте определим функцию шаблона, которая действует...
1109 просмотров
schedule
28.11.2022
Какая польза от пересылки rvalue?
Я читаю запись std::forward в cppreference .
Для второй перегрузки std::forward есть пример:
template<class T>
void wrapper(T&& arg)
{...
100 просмотров
schedule
03.06.2023
Почему для пересылки ссылок необходим std :: forward
В таком шаблоне функции
template <typename T>
void foo(T&& x) {
bar(std::forward<T>(x));
}
Разве x не является ссылкой на rvalue внутри foo , если foo вызывается со ссылкой на rvalue? Если foo вызывается со ссылкой...
1282 просмотров
schedule
22.07.2022
Иметь ссылку на rvalue вместо ссылки на пересылку с вариативным шаблоном
У меня есть структура X и функция foo , которая должна получать ссылки rvalue на X .
Сначала я начал с одного аргумента, и он был прост (ох... времена попроще):
auto foo(X&& arg) -> void {...};
X x;
foo(x); // compile...
859 просмотров
schedule
08.01.2024
Ссылка на пересылку C++ и ссылка на r-значение
Я понимаю, что ссылка на переадресацию — это «ссылка rvalue на параметр шаблона без квалификации cv», например, в
template <class T> void foo(T&& );
что означает, что приведенная выше функция может принимать ссылку как на...
3908 просмотров
schedule
01.10.2022
Явное создание экземпляра шаблона и ссылки на пересылку
Недавно я обсуждал со студентами возможности ограничения типов для шаблонов , использующих ссылки для переадресации . Я знал о сравнении типов по is_same вместе с static_assert или enable_if , но мы также говорили о явном создании экземпляров...
317 просмотров
schedule
20.04.2022
Выведены конфликтующие типы для универсальной ссылки и указателя на элемент
Я хочу такую функцию:
template<typename C, typename T>
void foo(C &&aclass, T (C::*const memberFunc)(unsigned)) {
}
Параметры (словами, потому что синтаксис типа C/C++ является ментальным):
Универсальная ссылка на класс,...
261 просмотров
schedule
20.04.2023
Идеальная функция пересылки вывела конфликтующую ошибку
Я тестирую идеальную пересылку, и я не понимаю, почему TEST_EQ(string("olleH"), s) компиляция не удалась, а string("olleH") == s компиляция прошла. Как мне исправить мою функцию TEST_EQ здесь?
template<typename S>
static bool...
58 просмотров
schedule
17.05.2023
Пересылка отдельных членов ссылки Forward
У меня есть функция, которая потенциально перемещает общий аргумент, но через его членов. Какой из этих вариантов более правильный:
Это кажется более естественным, но странным, потому что аргумент потенциально перемещается дважды [a], что...
32 просмотров
schedule
26.01.2024
Понимание реализации std::forward начиная с C++11
( constexpr и noexcept опущены, так как они кажутся неуместными для понимания поведения std::forward .)
Основываясь на моем понимании «Эффективного современного C++» Скотта Мейерса, пример реализации std::move в C++14 выглядит следующим...
183 просмотров
schedule
20.01.2023
Идеальный конструктор пересылки и удаленные конструкторы
Как указал Майкл Парк добавление идеальных конструкторов переадресации может быть сложным, если мы не хотим оказаться в неправильном конструкторе.
В настоящее время у меня есть класс A , который использует идеальный конструктор пересылки, и...
136 просмотров
schedule
02.05.2023
Как пересылать упакованные вариативные аргументы
У меня есть функция, которая принимает переменные аргументы, упакованные в кортеж.
template <class... Args>
void Bottom(tuple<Args&&...> t)
{
}
Является ли Args&& ссылкой для пересылки? т.е. будут ли применяться...
89 просмотров
schedule
01.12.2022
Передать строковый литерал в функцию шаблона
Я пытаюсь специализировать функцию шаблона для нескольких типов, один из них — const char*.
template<typename T = const char*>
void f(T&&);
template<>
void f<int>(int&& k) { std::cout << "Now in int fcn...
75 просмотров
schedule
15.05.2023
Использование универсальных ссылок с нешаблонными типами?
Я создаю простой оператор конвейера для векторов, который пользователь будет использовать следующим образом (псевдокод):
auto x = std::vector{1,2,3} | push_back(10)
| push_back(100)
;...
69 просмотров
schedule
13.05.2023