Mar*_*rco 8 c++ clang variant c++17
更新
我把这个问题缩小到(可能!它并不完全清楚,甚至可以阅读我能找到的关于该主题的所有内容)安装stdlibc++-7-dev将为我提供合适的(即符合C++ 17的)STL标头和库.
这(显然)也与Ubuntu 17.04(artful?)捆绑在一起,但不适用于xenial我正在使用的(Ubuntu 16.04.3 LTS).
我已经尝试下载单个.deb软件包并安装它们,但它很快就变成了一个未解决的依赖项迷宫.
如果有人能指出如何libstdc++-7-dev在16.04 安装,我将非常感激.
原始问题
我刚刚通过包管理器在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(doh!)但是当我使用时:
#include <variant>
Run Code Online (Sandbox Code Playgroud)
找不到我期望的文件:
$ 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
Run Code Online (Sandbox Code Playgroud)
或者我能想到的任何其他地方.
是否有人知道(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.
Run Code Online (Sandbox Code Playgroud)
同样的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.
Run Code Online (Sandbox Code Playgroud)
尽管如此,该variant.h*文件无处可寻.还有什么我应该尝试的吗?
是的,clang 5.0(或者更确切地说,将作为 clang 5 的一部分发布的 libc++)具有标<variant>头。但你需要确保你已经安装了libc++。
正如 @KayEss 提到的,您需要传递-std=c++17(或同一标志的早期版本-std=c++1z),因为变体是仅 C++17 的功能。
| 归档时间: |
|
| 查看次数: |
3869 次 |
| 最近记录: |