clang-4.0和std :: optional支持

时间:2017-07-07 17:53:43

标签: c++ clang c++17 clang++ stdoptional

根据clang的C ++ - 1z status page,我相信4.0应该支持C ++ 17 std::optional

但是我无法让它工作。看到这个简单的例子:

#include <optional>

int main() {
    return 0;
}

尝试以各种方式编译它们,都失败了:

$ clang++-4.0 main.cpp
In file included from main.cpp:1:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0/../../../../include/c++/7.1.0/optional:33:
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0/../../../../include/c++/7.1.0/bits/c++17_warning.h:32:2: error: This file
      requires compiler and library support for the ISO C++ 2017 standard. This support must be enabled with the
      -std=c++17 or -std=gnu++17 compiler options.
#error This file requires compiler and library support \
 ^
1 error generated.

(仅此一点有点奇怪,因为错误提到添加-std = c ++ 17,但事实证明该标志的名称是c ++ 1z并且没有c ++ 17:)

$ clang++-4.0 -std=c++17 main.cpp
error: invalid value 'c++17' in '-std=c++17'

无论如何我们继续:

$ clang++-4.0 -std=c++1z main.cpp
In file included from main.cpp:1:
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0/../../../../include/c++/7.1.0/optional:1032:27: error: use of class template
  'optional' requires template arguments
  template <typename _Tp> optional(_Tp) -> optional<_Tp>;
                      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0/../../../../include/c++/7.1.0/optional:451:11: note: template is declared
  here
class optional
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0/../../../../include/c++/7.1.0/optional:1032:40: error: expected ';' at end of
  declaration
  template <typename _Tp> optional(_Tp) -> optional<_Tp>;
                                   ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0/../../../../include/c++/7.1.0/optional:1032:41: error: cannot use arrow
  operator on a type
  template <typename _Tp> optional(_Tp) -> optional<_Tp>;
                                    ^
3 errors generated.

上次尝试:

$ clang++-4.0 -std=c++1z -stdlib=libc++ main.cpp
main.cpp:1:10: fatal error: 'optional' file not found
#include <optional>
         ^~~~~~~~~~
1 error generated.

clang info:

$ clang++-4.0 --version
clang version 4.0.1-svn305187-1~exp1 (branches/release_40)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

我做错了吗?

0 个答案:

没有答案