2016-09-04 3 views
-2

Versucht paar Varianten von unten Code aber nicht kompilieren, im Grunde, was ich erreichen möchte ist, dass ich Namespace dh Std oder Easternl definieren und dann einfach anhängen können zum Containertyp:Assembling Namespacename + Container basierend auf Präprozessordirektiven

#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>; 

Aber leider konnte ich keinen Weg finden, es zu tun. Irgendwelche Vorschläge sind mehr als willkommen.

+0

Dies ist kein Tippfehler ... – immibis

Antwort

1

Wenn Sie wirklich sicher, dass Sie das wollen, setzen Sie einfach

#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>; 

ohne die ## Präprozessordirektiven (die nur innerhalb Makrodefinitionen behandelt werden, nicht in Vorlagen).

Verwandte Themen