我有一个问题是否有办法实现cellettype关键字功能pre c 11。
我有一个简化的向量
template <class T>
struct MyVector {
typedef T ElementType;
T* arrayPtr;
uint64_t numberOfElements;
};
我希望能够在通用宏中获得T型T型,该宏可与此MyVector一起使用
#define ALLOCATE_SPACE(VectorRef, numberOfItems)
{
arrayPtr = new decltype(VectorRef)::ElementType[numberOfItems];
}
问题是我不能使用C 11东西。完美的解决方案是使其100%编译时间类型扣除。
任何人可以帮助我解决这个问题吗?
最好的问候
这是可能的。有一个提升宏来完成此魔术:
#include <boost/typeof/typeof.hpp>
#include <iostream>
#include <typeinfo>
int main() {
int a; float b;
BOOST_TYPEOF(a+b) c = a+b;
std::cout << typeid(c).name() << std::endl;
}
打印f
(浮点(。现场演示
不过,正如评论中已经指出的那样,您不需要这个问题。简单的模板功能将完成工作。