gpt4 book ai didi

c++ - 在 Ubuntu 16 上使用 clang++ 编译一个基本的 c++ 程序

转载 作者:IT老高 更新时间:2023-10-28 21:38:58 26 4
gpt4 key购买 nike

我在 Ubuntu 16.04 LTS(服务器)上编译时遇到问题。如果我不包含 -std=c++11 位,它可以编译。 Clang 版本是 3.8。

>cat foo.cpp
#include <string>
#include <iostream>
using namespace std;

int main(int argc,char** argv) {
string s(argv[0]);
cout << s << endl;
}


>clang++ -std=c++11 -stdlib=libc++ foo.cpp
In file included from foo.cpp:1:
/usr/include/c++/v1/string:1938:44: error: 'basic_string<_CharT, _Traits, _Allocator>' is missing exception specification
'noexcept(is_nothrow_copy_constructible<allocator_type>::value)'
basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a)
^
/usr/include/c++/v1/string:1326:40: note: previous declaration is here
_LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a)
^
1 error generated.

最佳答案

在 Mike Kinghan 的回复中提到的 Debian 错误被修复之前,只需将缺少的(但必需的)noexcept 规范手动添加到 ctor 定义中就可以解决该问题,即您可以添加

#if _LIBCPP_STD_VER <= 14
_NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
#else
_NOEXCEPT
#endif

/usr/include/c++/v1/string的第1938行之后。

关于c++ - 在 Ubuntu 16 上使用 clang++ 编译一个基本的 c++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com