C++ 如何检查C+中的确切类型信息(带有cv ref指针特征)+;?
然而,实际产出是:C++ 如何检查C+中的确切类型信息(带有cv ref指针特征)+;?,c++,standards,typetraits,abi,typeid,C++,Standards,Typetraits,Abi,Typeid,然而,实际产出是: int int& int&& const int const int& const int&& clang和vc++都采用相同的方法 < > >强>是否有一种可靠的方法来检查C++中的确切类型名称(具有CV REF指针特性)?> P>注意,当您传递引用类型时,结果 STD::Type OnngIs对象表示引用的类型。和cv限定符将被忽略 1) 指表示类型的std::type_info对象。如果type是引用类型,则结果引用表示
int
int&
int&&
const int
const int&
const int&&
clang和vc++都采用相同的方法
< > >强>是否有一种可靠的方法来检查C++中的确切类型名称(具有CV REF指针特性)?> P>注意,当您传递引用类型时,结果<代码> STD::Type OnngIs<代码>对象表示引用的类型。和cv限定符将被忽略 1) 指表示类型的
std::type_info
对象。如果type
是引用类型,则结果引用表示引用类型的std::type_info
对象
在所有情况下,typeid都会忽略cv限定符(即,typeid(const T)==typeid(T)
)
请注意,返回的是实现定义的
您可以应用(Scott Meyers)第4项中的技巧:了解如何查看派生类型,以便在编译时获取类型名。e、 g
int
int
int
int
int
int
模板
结构TD;
然后用它作为
template <typename>
struct TD;
TD;
您将收到一些关于类型名称的消息,如
错误:未定义模板“TD”的隐式实例化
不是以可移植的方式。也可以接受任何实现定义的方式。的可能副本的可能副本您还可以定义模板并打印其typeid名称。
template <typename>
struct TD;
TD<int> td;
error: implicit instantiation of undefined template 'TD<int>'