2016-09-04 38 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>; 

沒有##預處理指令(這些只是宏定義中處理,而不是在模板)。