Как заставить MinGW использовать пространство имен tr1? - PullRequest
3 голосов
/ 07 июня 2011

Я использую MinGW 4.5.2, и я хотел бы использовать unordered_map из пространства имен tr1, а не из пространства имен std, которое включается передачей -std = c ++ 0x. Я уверен, что это можно сделать, так как есть два файла unordered_map, и один находится в подкаталоге tr1.

Пояснение: Я также компилирую этот код с помощью msvc10, и он поддерживает unordered_map в обоих пространствах имен, но только в одном месте. Поэтому я бы хотел, чтобы он компилировался с обоими компиляторами с минимальными изменениями.

Ответы [ 2 ]

7 голосов
/ 07 июня 2011

Включить <tr1/unordered_map> и использовать std::tr1::unordered_map<>.

РЕДАКТИРОВАТЬ:

Я также компилирую этот код с msvc10, и он поддерживает его в обоих пространствах имен, но только в одномместо нахождения.Поэтому я хотел бы, чтобы он компилировался с обоими компиляторами с минимальным изменением.

Чтобы компилировать его с обоими компиляторами, вы можете использовать что-то вроде:

#if defined(_MSC_VER) && _MSC_VER >= 1600
# include <unordered_map>
#else
# include <tr1/unordered_map>
#endif
5 голосов
/ 07 июня 2011

Разве это не так просто, как

#include <tr1/unordered_map>
...