C++如何识别变量的类型

标签 c++ types

给定一个从 vector 中获取的变量,有没有办法识别类型。

请注意,我已经知道成员的类型并且可以在对模板的调用中指定它。这是一个允许特定类型变量的 push_back() 的特定 vector 。

例如,我们有一个允许 vector 运算的类。

auto data = member().back(); // gets the last entry in the member vector

使用模板,我想创建一个类型的新条目

dataType newdata;
member().push_back(newdata)

有没有办法根据 back() 操作的结果来识别数据类型?如果有,我可以创建一个模板,并通过传入成员指示符来检索类型。

如果没有,我必须专门传入类型才能定义

::base::dataArea newdata;

最佳答案

你可以只使用typename std::remove_reference<decltype( member().back() )>::type如果你真的想变聪明。但您应该使用 typename V::value_type , 其中V是通过 member 访问的 vector 类型.参见例如docs at cppreference :查阅相关文档通常是个好主意。

关于C++如何识别变量的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28839777/

相关文章:

c++ - 从 void* 到 unsigned char* 的指针行为的奇怪案例

c# - 如何确定属性是否被覆盖?

c - 为什么 "ceil()"函数的返回类型是 "double"而不是某种整数类型?

generics - 在 Typescript 中创建通用方法装饰器

.net - 如何从类型的程序集限定名中提取程序集全名?

c++ - 复制 C 风格的数组和结构

C++ 特殊成员函数

c++ - 无法在 C++ 中推送 vector 和列表中的项目?

c++ - 稀疏矩阵,重载 [] c++

pointers - 过滤 Vec<String> 时无法移出借用的内容