Почему этот код работает? с c++14
// Example program
#include <iostream>
#include <string>
using namespace std;
auto fun()
{
struct a
{
int num = 10;
a()
{
cout << "a made\n";
}
~a()
{
cout << "a destroyed\n";
}
};
static a a_obj;
return a_obj;
}
int main()
{
auto x = fun();
cout << x.num << endl;
}
Как выглядит вид a
в главном? если я изменяю auto x=
на a x=
, он явно не компилируется, но как основные знают о типе a
?
Объявление static
существует, так как я пытался проверить что-то еще, но затем я наткнулся на это поведение.
Запуск здесь: https://wandbox.org/permlink/rEZipLVpcZt7zm4j