Utilizando bibliotecas TR1 en GCC y MSVC
Me gustaría usar las bibliotecas TR1 que se envían con versiones modernas de GCC y MSVC, pero hay diferencias sutiles: en GCC, tengo que decir
#include <tr1/memory>
std::tr1::shared_ptr<int> X;
mientras en MSVC tengo que decir
#include <memory>
std::shared_ptr<int> X;
Tengo dos preguntas: 1) ¿MSVC funciona automáticamente en modo C ++ 0x (equivalente a std = c ++ 0x de GCC), o también funciona en modo C ++ 98/03 por defecto? 2) ¿Cómo puedo unificar las inclusiones y los espacios de nombres? Estaba pensando en una macro de preprocesador del tipo "INCLUDE_TR1 (memoria)" o algo así.
Para aclarar, quiero usar el C ++ 98/03 estándar tradicional; @n C ++ 0x (de lo contrario no habría problema).
¡Estaría muy agradecido por cualquier sugerencia!