Мой системный компилятор (gcc42) отлично работает с функциями TR1, которые я хочу, но стараюсь поддерживать более новые версии компилятора, отличные от систем, пытаясь получить доступ к заголовкам TR1 С#error, требующим опции -std = С++ 0x, потому что о том, как он взаимодействует с библиотекой или некоторым хабом-хабом.
/usr/local/lib/gcc45/include/c++/bits/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
Приобретение дополнительного коммутатора не представляет проблемы, чтобы поддерживать GCC 4.4 и 4.5 в этой системе (FreeBSD), но, очевидно, это меняет картину!
Использование моего системного компилятора (диалект g++ 4.2 по умолчанию):
#include <tr1/foo>
using std::tr1::foo;
Использование новых (4.5) версий компилятора с -std = С++ 0x:
#include <foo>
using std::foo;
В любом случае, используя предварительный процессор, я могу сказать, включен ли g++ с включенными функциями С++ 0x?
Что-то вроде этого - это то, что я ищу:
#ifdef __CXX0X_MODE__
#endif
но я ничего не нашел в руководстве или в Интернете.
С такой скоростью я начинаю думать, что жизнь будет проще, использовать Boost как зависимость, а не беспокоиться о новом языковом стандарте, прибывшем перед TR4... хе-хе.