簡體   English   中英

clang6是否實現了std :: optional?

[英]Does clang6 implement std::optional?

我想使用C ++ 17 std::optional但它似乎在clang中不存在:

> cat test.cxx 
#include <optional>

int main(int, char **) {
    return 0;
}
> $CXX --version | head -n1
clang version 6.0.0 (trunk 317775)
> $CXX -std=c++17 test.cxx 
test.cxx:1:10: fatal error: 'optional' file not found
#include <optional>
         ^~~~~~~~~~
1 error generated.

正如你所看到的,我正在使用一個相當新版本的clang,據我所知,clang 6應該有完整的C ++ 17支持。 乍一看,這看起來像是一個鏗鏘的問題,特別是因為包含<experimental/optional>工作得很好,但也許是我錯過了什么。 你有什么想法?

謝謝

正如評論中指出的那樣,Clang可能默認使用系統的libstdc ++頭文件,而你的系統的libstdc ++太舊了,無法支持C ++ 17。

安裝一個較新的GCC(附帶一個較新的libstdc ++)然后告訴Clang如何使用--gcc-toolchain=/path/to/new/gcc選項找到它,或者將Clac ++與Clang一起安裝並告訴它使用libc ++使用-stdlib=libc++選項。

如果您選擇安裝較新的libstdc ++,那么您至少需要GCC 7.1,這是第一個提供<optional>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM