[英]Why Clang at Coliru can't compile vector::push_back?
在这里看到它。 该程序非常普通,像这样:
#include <vector>
std::vector<int> bombs;
int main()
{
bombs.push_back(42); // compile errors
}
诊断对我来说没有多大意义:
在main.cpp包含的文件中:1:
在/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/中包含的文件中矢量:60:
在/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/中包含的文件中bits / stl_algobase.h:64:
在/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/中包含的文件中bits / stl_pair.h:59:
在/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/中包含的文件中位/移动.h:55:
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1061: 48:错误:“ _ Tp”未引用值
: public __bool_constant<__is_assignable(_Tp, _Up)> ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1059: 21:注意:在这里声明
template<typename _Tp, typename _Up> ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1061: 53:错误:
_Up
没有引用值: public __bool_constant<__is_assignable(_Tp, _Up)> ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1059: 35:注意:在这里声明
template<typename _Tp, typename _Up> ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/type_traits:1062: 5:错误:预期的类名
{ }; ^
在main.cpp包含的文件中:1:
在/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/中包含的文件中向量:63:
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized。 h:128:70:错误:
std::is_assignable<int &, int &&>
没有成员命名value
const bool __assignable = is_assignable<_RefType2, _RefType1>::value; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized。 h:289:19:注意:在实例化功能模板时,
std::uninitialized_copy<std::move_iterator<int *>, int *>
在这里要求{ return std::uninitialized_copy(__first, __last, __result); } ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized。 h:310:19:注意:在函数模板特化的实例化
std::__uninitialized_copy_a<std::move_iterator<int *>, int *, int>
return std::__uninitialized_copy_a ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/vector。 tcc:446:13:注意:在函数模板特化的实例化
std::__uninitialized_move_if_noexcept_a<int *, int *, std::allocator<int> >
此处请求= std::__uninitialized_move_if_noexcept_a ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/vector。 tcc:109:4:注意:在函数模板特化的实例化
std::vector<int, std::allocator<int> >::_M_realloc_insert<int>
_M_realloc_insert(end(), std::forward<_Args>(__args)...); ^
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_vector。 h:1091:9:注意:在实例化功能模板特化
std::vector<int, std::allocator<int> >::emplace_back<int>
{ emplace_back(std::move(__x)); } ^
main.cpp:7:9:注意:在实例化成员函数
std::vector<int, std::allocator<int> >::push_back
bombs.push_back(42); ^
产生4个错误。
与g ++相同,编译没有任何问题。 我真的看不到Coliru的Clang所包含的库标头,这些库标头本身就是用来进行编程的。 有谁知道哪里出了什么问题以及如何解决这个问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.