Я смотрел один из видео Джейсона Тернера, и я увидел, что вы можете определить тип внутри области функций и получить его вне этого объем через функцию возврата типа типа.
auto f()
{
struct MyStruct
{
int n;
};
return MyStruct{};
}
int main()
{
auto a = f().n;
return a;
}
Почему это разрешено? Есть ли абзац в стандарте С++ 14, который позволяет это?
При попытке получить typeid
из MyStruct
с помощью clang в компилировать проводник я увидел на выходе сборки тип, отображаемый как f()::MyStruct
, поэтому существует область видимости, но каким-то образом я могу получить доступ к MyStruct
вне этой области. Это какая-то вещь ADL?