-std = c ++ 17でコンパイルできません。
error: invalid value 'c++17' in '-std=c++17'
ただし、Xcodeとclangを更新します。
私のClangバージョンは:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-Apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin`
そして、オプションのように最新のヘッダーをロードします、私はしなければなりません
#include <experimental/optional>
の代わりに
#include <optional>
Xcodeは、ヘッダーや実際のコンパイラを含む独自の完全なツールチェーンをもたらします。
Apple LLVM version 9.0.0 (clang-900.0.39.2)
(Xcode 9.2に付属)は、フラグ_-std=c++17
_が古すぎるため、フラグの使用をサポートしていません。オプションのヘッダーは、_experimental/
_フォルダーにのみ含まれます。これが_#include <experimental/optional>
_が必要な理由です
Xcode 9.2に付属するコンパイラを使用してc ++ 17サポートでプログラムをコンパイルするには、_-std=c++1z
_フラグを使用する必要があります。
Xcode 9.3には、_-std=c++17
_フラグをサポートするApple LLVM version 9.1.0 (clang-902.0.30)
が同梱されます。ただし、optional
ヘッダーは、現在でも_experimental/
_サブディレクトリの下にあります。これはベータ期間中に変更される可能性があります。
これが私がこのテストで得るものです:
#include <experimental/optional>
int main(int, char* []) {
return 0;
}
g++ -std=c++17 -o test test.cpp
error: invalid value 'c++17' in '-std=c++17'
g++ -std=c++1z -o test test.cpp
C++ 1z引数を試しましたか?また、私のテストは-std = c ++ 1z引数を指定せずにコンパイルできます。
私はあなたよりも新しいバージョンのOSXを使っていると思います:
Target: x86_64-Apple-darwin17.4.0
フラグとして-std=c++1z
を使用する必要があります。