、、などを対象MSVCとした新しいプロジェクトを開始しています。私たちが構築したビルドシステムには、コンパイラの機能検出機能があります。GCC (latest)GCC 4.3 ARMwafC++11
C++11これで、たとえば、ターゲットにしているコンパイラのすべての機能のプリプロセッサマクロができました#ifdef WAF_FEATURE_CXX_STRONGLY_TYPED_ENUMS。したがって、コンパイラがサポートするものに合わせてさまざまなコードをコンパイルできます。GCCほぼサポートしているので、すべてが近くにありMSVCません(MSVC11でも)
これにより、Web開発ポリフィルについて考えるようになりました。機能が利用できない場合は、利用可能な機能セットを使用して実装してください。
これは、Web開発ポリフィルほど単純でC++11はありませんが、コンパイラーがサポートしていない場合、C ++ 03で簡単に実装できるものはありますか?
これは、パブリックAPIで強く型付けされた列挙子を使用したいという事実に要約されますが、スコープMyClass::MyEnumerator::EnumValueはのようMyClass::EnumValueになりC++03ます。とにかく私は同じことをC++03簡単に起こさせることができますか?
class MyClass {
public:
#ifdef WAF_FEATURE_CXX_STRONGLY_TYPED_ENUMS
enum class MyEnumerator : unsigned int {
#else
enum MyEnumerator {
#endif
EnumValue = 0
}
void method(MyEnumerator e);
}
MyClass mc = new MyClass();
mc.method(MyClass::MyEnumerator::EnumValue) // C++11
mc.method(MyClass::EnumValue) // C++03 :(