Импорт std::tr1 в std — законно ли это? Это улучшает переносимость?

У меня есть код C++03, который выглядит так:

#include <boost/tr1/unordered_map.hpp>
...
std::tr1::unordered_map<std::string, int> mystuff;
...

Я начал задаваться вопросом, что я буду страдать позже, если/когда я конвертирую свой код на С++ 11, который (я думаю) не имеет std::tr1::unordered_map, но вместо этого имеет std::unordered_map. Итак, я придумал следующий хак:

namespace std
{
    using namespace ::std::tr1;
}
...
std::unordered_map<std::string, int> mystuff; // no tr1 now!
...

Это законно (может быть, импортировать что-то в stdзапрещено)? Упростит ли это перенос/взаимодействие с кодом C++11?

14
задан anatolyg 24 May 2012 в 10:52
поделиться