次の方法で共有


コンパイラ エラー C2429

'language feature' にはコンパイラ フラグ ''compiler option' が必要です

言語機能には、サポートのための特定のコンパイラ オプションが必要です。

Visual Studio 2015 Update 5 以降、1 つ以上のスコープで入れ子になった名前空間の名前が含まれる複合名前空間を定義しようとした場合に、エラー「C2429: 言語機能 'nested-namespace-definition' にはコンパイラ フラグ '/std:c++17' が必要です」が生成されます。 (Visual Studio 2017 バージョン 15.3 では、/std:c++latest スイッチが必要です)。C++ 17 より前の C++ では、複合名前空間の定義は許可されていません。 コンパイラでは、/std:c++17 コンパイラ オプションが指定されている場合に、複合名前空間の定義がサポートされます。

// C2429a.cpp
namespace a::b { int i; } // C2429 starting in Visual Studio 2015 Update 3.
                          // Use /std:c++17 to fix, or do this:
// namespace a { namespace b { int i; }}

int main() {
   a::b::i = 2;
}