2016-09-04 32 views
-2

尝试过几种以下代码的变体,但不能编译,基本上我想实现的是我想能够定义命名空间,例如std或eastl,然后简单地追加它到集装箱类型:根据预处理器指令组装命名空间名称+容器

#ifndef EASTL 
#include <vector> 
#define NMS std 
#else 
#include <EASTL\vector.h> 
#define NMS eastl 
#endif 

template<class T> 
using vector_t = NMS##::##vector<T>; 

但不幸的是,我无法找到一种方法来做到这一点。任何建议都是值得欢迎的。

+0

这不是印刷错误... – immibis

回答

1

如果你真的确定你想要的,简单地说

#ifndef EASTL 
#include <vector> 
#define NMS std 
#else 
#include <EASTL\vector.h> 
#define NMS eastl 
#endif 

template<class T> 
using vector_t = NMS::vector<T>; 

没有##预处理指令(这些只是宏定义中处理,而不是在模板)。