C++ 中的 'auto' 是否识别自定义数据类型?

Does 'auto' in C++ recognize custom data types?

我想知道我是否可以自己制作一个 class,然后这样做:

class my{
/*some things*/
}myobj;

然后

auto newobj = myobj;

auto能认出这个myobj吗?它也适用于结构吗?

答案是肯定的,因为您可能已经检查过编译它。规则与模板参数推导相同。您始终可以检查在 IDE 中为给定的自动变量推导出什么类型,或者为此使用编译器错误,例如:

class my{
/*some things*/
}myobj;

template<typename T> class TD;

int main()
{
    auto newobj = myobj;
    TD<decltype(newobj)> td;
}

产生错误:

main.cpp:14:26: error: aggregate 'TD<my> td' has incomplete type and cannot be defined
     TD<decltype(newobj)> td;

为您提供的信息表明 newobj 的类型为 my