Можно ли использовать структурированные привязки только с некоторой структурой в качестве возвращаемого значения?
Верните любой класс / структуру, например кортеж здесь работает нормально:
auto f()
{
return std::make_tuple(1,2.2);
}
Есть ли что-то, что позволяет что-то вроде:
auto f() -> [int,double]
{
return { 1, 2.2 }; // maybe with or without braces arround
}
Вы не можете иметь такую конструкцию
auto f() -> [int,double]
поскольку там нет информации о типе. Трейлинг-возврат ожидает тип-идентификатор который определяется как спецификатор типа-seq абстрактный-деклараторвыбирать
Поскольку вы должны указать тип в типе возвращаемого значения, вы можете использовать что-то вроде
auto f() -> std::tuple<int,double>
указать, что вы хотите вернуть int
а также double
,
Также обратите внимание, что структурированные привязки может использоваться на классах с открытыми членами данных, объектами типа кортежей и массивами.
Других решений пока нет …