объявление функции для структурированных привязок

Можно ли использовать структурированные привязки только с некоторой структурой в качестве возвращаемого значения?

Верните любой класс / структуру, например кортеж здесь работает нормально:

auto f()
{
return std::make_tuple(1,2.2);
}

Есть ли что-то, что позволяет что-то вроде:

auto f() -> [int,double]
{
return { 1, 2.2 }; //  maybe with or without braces arround
}

2

Решение

Вы не можете иметь такую ​​конструкцию

auto f() -> [int,double]

поскольку там нет информации о типе. Трейлинг-возврат ожидает тип-идентификатор который определяется как спецификатор типа-seq абстрактный-деклараторвыбирать

Поскольку вы должны указать тип в типе возвращаемого значения, вы можете использовать что-то вроде

auto f() -> std::tuple<int,double>

указать, что вы хотите вернуть int а также double,

Также обратите внимание, что структурированные привязки может использоваться на классах с открытыми членами данных, объектами типа кортежей и массивами.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]