- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
为什么下面的例子:
#include <iostream>
#include <typeinfo>
template<typename T>
void fun(const T& param)
{
std::cout << "T = " << typeid(T).name() << std::endl;
std::cout << "param = " << typeid(param).name() << std::endl;
std::cout << (typeid(T)==typeid(param)) << std::endl;
}
int main(int, char**)
{
fun(1);
}
给出以下输出:
T is i
param is i
1
我知道 type_info::name()
行为依赖于实现。无论如何,我希望 operator==
返回 false
(因为 param
是一个 const 引用,而不是一个整数)。
最佳答案
这是在标准中定义的:
5.2.8/5: If the type of the expression or type-id is a cv-qualified type, the result of the typeid expression refers to a std::type_info object representing the cv-unqualified type [Example:
class D { /* ... */ };
D d1;
const D d2;
typeid(d1) == typeid(d2); // yields true
typeid(D) == typeid(const D); // yields true
typeid(D) == typeid(d2); // yields true
typeid(D) == typeid(const D&); // yields true—end example ]
关于c++ - typeid/type_info 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087252/
我目前正在学习运行时类型 ID 和强制转换运算符。我有一些疑问,您能帮我解答一下这个疑惑吗? 请参阅以下代码: #include #include using namespace std;
所以,我发现了这个关于 C++ 事件的非常好的教程: http://www.gamedev.net/page/resources/_/technical/game-programming/effect
我正在尝试存储一组对象(全部继承自基础 acorn::Component)。但是,在我的 AddComponent 函数中,我不断收到此错误: 错误 C2280:“type_info::type_in
我从“Inside The C++ Object Model”中读到,type_info 对象通常存储在虚拟表的第一个槽中。但是,我迭代了虚拟表中的成员: class Base { public:
根据 cplusplus.com,std::type_info::before()函数... Returns true if the type precedes the type of rhs in
我知道编译器在实现 std::type_info 函数的行为方面有很大的自由度。 我正在考虑使用它来比较对象类型,所以我想确定: std::type_info::name 必须为两种不同的类型返回两个
当使用typeid(char[10])时,可以获得char[10]的std::type_info。 现在我遇到的问题是,我需要获取 typeid(char[n]),其中 n 不是 constexpr。
我有一个 type_info 对象,它定义了属性映射中的属性类型。我想运行一些代码(例如从 cin 中读取值),该代码使用我的 type_info 对象定义的类型进行参数化。它可以是一些模板函数,即:
考虑以下方法 static ComponentType & getTypeFor(const type_info &t){ ComponentType * type = compone
有没有办法从两个 const ::std::type_info 中判断对象,让我们将它们命名为B和 D如果 D 描述的类型是从类型 B 派生的? 我问是因为我想删除我得到的对象的类型,但稍后能够检查它
为什么下面的例子: #include #include template void fun(const T& param) { std::cout << "T = " << typ
这个问题在这里已经有了答案: Is it possible to print a variable's type in standard C++? (25 个答案) 关闭 2 年前。 我用g++编译
我存储了一个指向 type_info 对象的指针。 int MyVariable = 123; const std::type_info* Datatype = &typeid(MyVariable)
我正在微优化 code for identifying object types .我假设我可以使用以下方法检查在同一模块中实例化的两个对象是否具有相同的类型: SomeCommonBase& fir
我将 C++ 与 RTTI 结合使用。我有一个类的 type_info。如果我只有 type_info,如何判断另一个类是否是第一个类的子类? #include class Foo
我有一棵树,其中每个节点基本上是这样的: struct node { std::unordered_set objects; std::map children; }; 当我遍历树以添
可以定义一个 constexpr std::type_info 上的指针任何类的对象 T .该语言是否允许在编译时比较此类指针的相等性? 例如: #include template inline
我有以下最小示例代码。我希望能够在我的 Application::HandleEvent 中确定派生类方法。 Application 类最终将包含一个 map哪些 map type_info到处理程序
有没有办法在 C++ 中使用 const std::type_info& 作为模板参数? 例如 template class A { public: A(){} const std:
我有一组多态 C++ 类,它们都由同一个模块 (Windows DLL) 实例化。现在有两个指向此类的指针并调用了 typeid: SomeCommonBase* first = ...; //val
我是一名优秀的程序员,十分优秀!