Namespaces
Variants

std::forward_as_tuple

С сайта ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования возможностей библиотеки (C++20)
Утилиты программ
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношения (устарело в C++20)
 
 
Определено в заголовочном файле <tuple>
template< class... Types >
std::tuple<Types&&...> forward_as_tuple( Types&&... args ) noexcept;
(начиная с C++11)
(constexpr начиная с C++14)

Создаёт кортеж ссылок на аргументы в args, пригодный для передачи в качестве аргумента функции. Кортеж содержит элементы-данные, являющиеся rvalue-ссылками, если в качестве аргументов используются rvalue, и lvalue-ссылками в противном случае.

Параметры

args - ноль или более аргументов для создания кортежа

Возвращаемое значение

Объект std::tuple , созданный как будто с помощью std:: tuple < Types && ... > ( std:: forward < Types > ( args ) ... )

Примечания

Если аргументы являются временными объектами, forward_as_tuple не продлевает их время жизни; их необходимо использовать до конца полного выражения.

Пример

#include <iostream>
#include <map>
#include <string>
#include <tuple>
int main()
{
    std::map<int, std::string> m;
    m.emplace(std::piecewise_construct,
              std::forward_as_tuple(6),
              std::forward_as_tuple(9, 'g'));
    std::cout << "m[6] = " << m[6] << '\n';
    // The following is an error: it produces a
    // std::tuple<int&&, char&&> holding two dangling references.
    //
    // auto t = std::forward_as_tuple(20, 'a');
    // m.emplace(std::piecewise_construct, std::forward_as_tuple(10), t);
}

Вывод:

m[6] = ggggggggg

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

(C++11)
создает объект tuple типа, определяемого типами аргументов
(шаблон функции)
(C++11)
создает tuple ссылок на lvalue или распаковывает кортеж в отдельные объекты
(шаблон функции)
(C++11)
создает tuple путем объединения любого количества кортежей
(шаблон функции)
(C++17)
вызывает функцию с кортежем аргументов
(шаблон функции)