Sto provando a scrivere un codice di libreria C++ portatile che inizialmente si baserà su Boost.Regex e quindi passare a TR1 come i compilatori supportano e infine al C++ Specifica 0x dopo che le cose vengono spostate dal namespace std :: tr1 a std. Ecco alcuni pseudo-codice per quello che mi piacerebbe fare con il preprocessore:Determinare l'esistenza in fase di compilazione dei file di inclusione in 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;
}
Certo, tutto questo sarebbe bisogno di essere in direttive del preprocessore, ma se sapessi come realizzare che non avrei chiedile qui :)
Grazie per il chiarimento! :) – Zac