Мой системный компилятор (gcc42) прекрасно работает с нужными мне функциями TR1, но пытается поддерживать более новые версии компилятора, кроме систем, пытается получить доступ к заголовкам TR1 и #error, требуя опцию -std = c ++ 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 = c ++ 0x:
#include <foo>
using std::foo;
Есть ли в любом случае предварительный процессор, который я могу сказать, если g ++ работает с включенными функциями C ++ 0x?
Что-то вроде этого - то, что я ищу :
#ifdef __CXX0X_MODE__
#endif
но я не нашел ничего в руководстве или в Интернете.
В таком случае я начинаю думать, что жизнь будет проще, использовать Boost в качестве зависимости, а не беспокоиться о новом стандарте языка, появившемся до TR4 ... хе-хе.