Возвращение анонимной структуры
В C ++ не существует такой вещи, как анонимная структура. Этого достаточно, чтобы сделать это невозможным.
Существует ограниченный способ возврата объекта анонимного типа из функции: возврат лямбды.
auto make_square_function() {
return [bar = 7]() {
return bar * bar;
};
}
Лямбды намного более ограничены, чем обычные классы. Элементы (захваты) инкапсулированы и не могут быть названы извне лямбда-выражения, и нет никаких функций-членов, кроме перегрузки вызова функции.
В любом случае можно сделать это без избыточного имени переменной a
Только если вы дадите классу имя:
struct Squarer {
int bar;
int square() {
return bar * bar;
}
};
auto foo() {
return Squarer{7};
}
Возвращение экземпляра безымянного класса возможно только путем определения переменной.