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

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

本文关键字:识别 定义数据类型 中的 auto 是否 C++      更新时间:2023-10-16

我想知道我是否制作了一个自己的类,并这样做:

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 类型的信息