РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
761 of 815 menu

Функция forward_as_tuple

Функция forward_as_tuple создает кортеж из ссылок на переданные аргументы, сохраняя их категории значений (lvalue или rvalue). Это позволяет осуществлять идеальную передачу аргументов без их копирования. В параметры функции мы передаем произвольный набор аргументов, для каждого из которых будет создана ссылка соответствующего типа.

Синтаксис

#include <tuple> std::forward_as_tuple(args...)

Пример

Давайте создадим кортеж ссылок на переменные и изменим значение одного из элементов:

#include <iostream> #include <tuple> #include <string> using namespace std; int main() { int a = 1; string b = "abcde"; auto res = forward_as_tuple(a, b); get<0>(res) = 42; get<1>(res) = "12345"; cout << a << endl; cout << b << endl; return 0; }

Результат выполнения кода:

42 12345

Пример

Давайте передадим временные значения в кортеж и проверим типы полученных ссылок:

#include <iostream> #include <tuple> #include <type_traits> using namespace std; int main() { int a = 1; auto res = forward_as_tuple(a, 2); cout << boolalpha; cout << is_lvalue_reference<decltype(get<0>(res))>::value << endl; cout << is_rvalue_reference<decltype(get<1>(res))>::value << endl; return 0; }

Результат выполнения кода:

true true

Смотрите также

  • функция make_tuple,
    которая создает кортеж из значений
  • функция tie,
    которая создает кортеж lvalue-ссылок
  • функция make_pair,
    которая создает пару из двух значений
  • функция any_cast,
    которая извлекает значение из объекта any
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить