<功能>上的clang 4构建错误用 c++1z [英] clang 4 build error on &lt;functional&gt; with c++1z

查看:33
本文介绍了<功能>上的clang 4构建错误用 c++1z的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚将我的 arch linux 系统更新到最新的,其中包括 gcc 7.1.1.试图构建这个:

I just updated my arch linux system to the latest which includes gcc 7.1.1. Trying to build this:

#include <functional>

int main(int argc, char** argv) {
    return 1;
}

使用命令

clang++ main.cpp -std=c++1z

导致错误:

In file included from main.cpp:1:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/functional:60:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/unordered_map:47:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/bits/hashtable.h:37:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/bits/node_handle.h:39:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/optional:1032:27: error: use of class template 'optional'
      requires template arguments
  template <typename _Tp> optional(_Tp) -> optional<_Tp>;
                          ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/optional:451:11: note: template is declared here
    class optional
          ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/optional:1032:40: error: expected ';' at end of declaration
  template <typename _Tp> optional(_Tp) -> optional<_Tp>;
                                       ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/optional:1032:41: error: cannot use arrow operator on a type
  template <typename _Tp> optional(_Tp) -> optional<_Tp>;

这是我的错误,arch linux 还是 clang?

Is this an error on my part, arch linux, or clang?

更新:(忘记添加版本)

Update: (forgot to add versions)

  • gcc 包版本 7.1.1-2(提供/usr/include/c++ 目录)
  • clang 包版本 4.0.0-3

推荐答案

有点晚,但我想总结一下.

Little late but I would like to sum it up.

这个:

template <typename _Tp> optional(_Tp) -> optional<_Tp>;

是演绎指南的例子.在这里您可以找到有关此语言功能的详细说明.

is the example of deduction guides. Here you can find nice explanation of this language feature.

当使用 -std=c++17 或 c++1z 标志时,新版本的 libstdc++ 在其实现中使用它.不幸的是,Clang 尚不支持此功能.Clang C++1z 状态页面 报告它仅在 SVN 上可用.

New version of libstdc++ uses it in its implementation when -std=c++17 or c++1z flag is in use. Unfortunately Clang does not support this feature yet. Clang C++1z status page reports it as available only on SVN.

您可以在此处找到关于 Arch Linux 的错误报告.

You can find bug report for Arch Linux here.

这篇关于<功能>上的clang 4构建错误用 c++1z的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆