Estoy intentando escribir algún código portátil de biblioteca C++ que inicialmente se basará en Boost.Regex, y luego pasará a TR1 a medida que los compiladores lo soporten, y finalmente a C++ Especificación 0x después de que las cosas se trasladan del espacio de nombres std :: tr1 a std. Aquí es un poco de pseudo-código para lo que me gustaría hacer con el preprocesador:Determine la existencia en tiempo de compilación de los archivos de inclusión en C++
if(exists(regex)) // check if I can #include <regex>
{
#include <regex> // per TR1
if(is_namespace(std::tr1)) // are we on TR1 or C++0x?
{
using std::tr1::regex;
} else
{
using std::regex;
}
} else // fall-back to boost
{
#include <boost/regex.hpp>
using boost::regex;
}
Por supuesto, todo esto tendría que ser en las directivas de preprocesador, pero si sabía cómo lograr que no lo haría estar preguntando aquí. :)
¡Gracias por la aclaración! :) – Zac