Ответ 1
auto x = foo(); // Type not given explicitly decltype(foo()) y = foo(); // Provides no more information than 'auto'
И что? Почему вас интересует, что такое "настоящее" имя?
Как говорится в комментарии dyp, вы можете использовать typedef, чтобы дать ему имя, если это делает вас лучше, чем auto
:
using foo_C = decltype(foo());
Иногда желательно явно указать тип. То есть полезно написать "тип C, определенный в foo", а не "любой тип возврата foo". Есть ли способ явно написать тип возвращаемого значения foo?
Нет.
Нет имени для "области действия внутри foo()
", так как нет имени для этих областей:
void bar()
{
int i=0;
// this scope does not have a name, cannot qualify `i`
{
int i=1;
// this scope does not have a name, cannot qualify either `i`
}
}