首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取变量的类型?

如何获取变量的类型?
EN

Stack Overflow用户
提问于 2010-09-09 07:08:44
回答 2查看 778关注 0票数 0

示例:

代码语言:javascript
复制
template<typename T>
struct type_of {
   typedef boost::mpl::if_<boost::is_pointer<T>,
   typename boost::remove_pointer<T>::type,
   T
   >::type type;
};

int main() {
   int* ip;
   type_of<ip>::type iv = 3; // error: 'ip' cannot appear in a constant-expression
}

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-09 07:20:54

你不能。要么使用编译器特定的扩展,要么使用Boost的Typeof (它将编译器特定的行为隐藏在一致的接口后面)。

在C++0x中,您可以使用decltypedecltype(ip) iv = 3;如果您的编译器支持C++0x的这一方面,那么您就走运了。

票数 2
EN

Stack Overflow用户

发布于 2010-09-09 07:12:42

在当前的C++规范中,您无法获取变量的类型,至少在没有特定于编译器的东西的情况下是无法获取的(但是可以尝试boost::typeof,它以一种透明的方式收集这些技巧)。

你所写的基本上是一个从类型中删除指针限定符的模板:type_of<int>::typeinttype_of<int*>::type也是。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3672597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档