Как включить TR1?
разные компиляторы, похоже, имеют разные идеи о TR1. G++, похоже, принимает только includes типа:
#include <tr1/unordered_map>
#include <tr1/memory>
...
в то время как компилятор Microsofts принимает только:
#include <unordered_map>
#include <memory>
...
Как я понимаю TR1, путь Microsoft является правильным.
есть ли способ заставить G++ принять вторую версию? Как вообще обрабатывать TR1 переносным способом?
6 ответов
установить boost на вашем компьютере.
Добавьте в путь поиска следующий каталог.
/ boost / tr1 / tr1
посмотреть здесь увеличить tr1 дополнительные сведения
теперь, когда вы включаете
#ifdef _WIN32
#include <unordered_map>
#include <memory>
#else
#include <tr1/unordered_map>
#include <trl/memory>
#endif
возможно, лучшим способом было бы просто использовать boost библиотеки на данный момент, как и во многих случаях, у них есть альтернативы с аналогичным интерфейсом для функций TR1 и просто находятся в другом (но согласованном) пути заголовка и пространстве имен. Это имеет преимущество работы с компиляторами, которые даже не начало реализация C++0x. И есть много полезных библиотек boost, которые вообще не находятся в TR1:)
поочередно, на G++, вы можете попробовать передать -- std=gnu++0x в командной строке. Это работает для и
namespace std { namespace tr1 { using namespace std; } }
это зло, естественно. Я настоятельно рекомендую подход boost вместо этого:)
если под Windows, добавьте каталог " tr1 " в системный путь. Тогда #include <memory>
должны работать.
Я задал себе тот же вопрос. К сожалению, в техническом отчете не говорится,как должны быть включены заголовки. Он только определяет, что расширения должны находиться в пространстве имен ::std::tr1.