В С++ 1y возможно, чтобы возвращаемый тип функции включал локально определенные типы:
auto foo(void) {
class C {};
return C();
}
Имя класса C
не входит в область вне тела foo
, поэтому вы можете создавать экземпляры класса, но не указывать их тип:
auto x = foo(); // Type not given explicitly
decltype(foo()) y = foo(); // Provides no more information than 'auto'
Иногда желательно явно указать тип. То есть полезно написать "тип C, определенный в foo", а не "любой тип возврата foo". Есть ли способ явно записать тип возвращаемого значения foo
?