我有各种2D向量,我想在运行时查询它们的不同类型.
看来这可能在"空"向量上,例如:
vector<vector<float> > myVec;
cout << (typeid(myVec[0][0]).name() << endl;
Run Code Online (Sandbox Code Playgroud)
上面返回"浮动",虽然我期待一个例外,因为我没有推回任何元素.
只是运气,在[0][0]没有任何边界检查或迭代器访问内存时它成功了吗?或者向量在声明时分配一些基线存储?
由于float没有任何虚方法,编译器可以typeid(some_float_object)静态计算而不查看实际表达式,只查看其静态类型.根据C++标准的5.2.8节(当前的C++ 0x草案),甚至不允许编译器评估表达式.
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |