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!