更新
我把问题缩小到了 (可能是这个原因!尽管我已经阅读了关于这个主题的所有内容,但还不完全清楚) 安装 stdlibc++-7-dev
将为我提供合适的 (即符合 C++17 标准的) STL 头文件和库。
这也似乎与 Ubuntu 17.04 (artful
?) 绑定在一起,但不可用于我使用的 xenial
(Ubuntu 16.04.3 LTS)。
我尝试下载单独的 .deb
包并安装它们,但很快变成了一个无法解决的依赖项迷宫。
如果有人能指导我如何在 16.04 上安装 libstdc++-7-dev
,我将非常感激。
原始问题
我刚刚通过包管理器在 Ubuntu 16.04 中安装了 clang++ 6.0 (遵循这些说明),看起来一切都很好:/usr/bin/clang++-6.0
可以正常工作,并且如果我尝试使用仅在 C++17 中工作的东西 (non-type template arguments with auto
,请参见这里),只要我设置 CMAKE_CXX_COMPILER=/usr/bin/clang++-6.0
,它就可以编译和运行 -- 而在我不设置时则会失败。
所以... clang 6.0
如其广告所述理解 C++17,但是当我使用:
#include <variant>
文件没有在我预期的位置找到:
$ ll /usr/include/clang/6.0.0/
total 0
lrwxrwxrwx 1 root root 45 Aug 6 21:32 include -> ../../../lib/llvm-6.0/lib/clang/6.0.0/include
或者任何我能想到的地方。
有人知道(a)它是否应该在那里,以及(b)如果是这样,我去哪里找到它?
更新
我已经双重检查了我是否拥有最新的stdc++
库:
$ sudo apt-get install libstdc++-5-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libstdc++-5-dev is already the newest version (5.4.0-6ubuntu1~16.04.4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
同样的,libstdc++-6-dev
也是如此;此外,我还有libc++-dev
:
$ sudo apt-get install libc++-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc++-dev is already the newest version (3.7.0-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
然而,variant.h*
文件仍无法找到。还有其他什么我应该尝试吗?
c++1z
标志下(我不希望这会改变,直到标准被批准)。我认为他们已经在开发中切换到了6,因为他们正准备发布5。 - KayEss<experimental/variant>
。这就是我在更新编译器之前使用<optional>
的方法。 - Post Self