最初はBoost.Regexに依存するポータブルC++ライブラリコードを作成しようとしていますが、コンパイラがサポートしているのでTR1に移行し、std::tr1名前空間から移動した後に最終的にC++0x仕様に移行します。 stdに。これが私がプリプロセッサでやりたいことのためのいくつかの擬似コードです:
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;
}
確かに、それはすべてプリプロセッサディレクティブに含まれている必要がありますが、それを実現する方法を知っていれば、ここでは質問しません。:)