更新
我将问题缩小到(可能!即使阅读了我能找到的有关该主题的所有内容,也不完全清楚(安装stdlibc++-7-dev
将为我提供合适的(即符合 C++17 标准(STL 标头和库。
这(显然也(与 Ubuntu 17.04 捆绑在一起(artful
?(,但不适用于我正在使用的xenial
(Ubuntu 16.04.3 LTS(。
我尝试下载单个.deb
包并安装它们,但它很快就会变成未解决的依赖项的迷宫。
如果有人能指出如何在 16.04 上安装libstdc++-7-dev
,我将不胜感激。
原始问题
我刚刚通过包管理器在 Ubuntu 6.0 中安装了 clang++ 16.04(按照这些说明(,一切似乎都很好:/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(doh!(,但是当我使用:
#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*
文件还是无处可寻。 还有什么我应该尝试的吗?
是的,clang 5.0(或者更确切地说,将作为clang 5的一部分发布的libc ++(具有<variant>
标头。但是你需要确保你已经安装了libc ++。
正如@KayEss提到的,您需要传递-std=c++17
(或同一标志的早期版本-std=c++1z
(,因为变体是仅限 C++17 的功能。