[英]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.