c++ - 如何获取变量的类型?

标签 c++ boost boost-mpl

例子:

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
}

谢谢!

最佳答案

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

在 C++0x 中,你可以使用 decltype:decltype(ip) iv = 3; 如果你的编译器支持 C++0x 的这个方面,你很幸运。

关于c++ - 如何获取变量的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672597/

相关文章:

C++ 泛型编程的精妙之处

c++ - 插入的项目从 boost::mpl::map 中消失

c++ - 如何遍历非默认构造类的 boost MPL 列表?

c++ - 使用 fmt 库将 vector<int> 转换为字符串

c++ - C/C++中的所有函数都在哪里定义的?

c++ - 如何强制编译器使用聚合初始化而不是构造函数

c++ - 确定套接字中的可用字节数

c++ - 使用 OpenMP 在 odeint 中创建受控步进器

c++ - 如何将成员函数引入作用域?

c++ - 重载 'ref(Select::Expressions::Code&)' 的调用在 C++11 中不明确