【发布时间】:2013-12-14 15:09:03
【问题描述】:
假设我有一些执行以下操作的模板代码:
T x = foo();
T y = -x;
现在,如果 T 是非数字类型(或者没有实现一元减号),编译将简单地失败。但如果它是 unsigned int、unsigned short 等,它会成功,但会发出警告。所以我希望能够做到
T x = foo();
if (/* magic condition */ {
T y = -x;
}
我可以写出 T 的类型是某种有符号数字类型的条件(在编译时或运行时检查)吗?例如使用 typeid?
注意:
- 断言也不错,但我想要更灵活的东西。
【问题讨论】:
标签: c++ polymorphism conditional-compilation typeof typeid