See it here. 该计划非常平凡,就像那样:
#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/vector: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/bits/move。 H:55:
的/ usr / local / bin中/../ LIB / GCC / x86_64的-PC-Linux的GNU / 8.1.0 /../../../../包括/ 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 /../../../../包括/ 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 /../../../../包括/ 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 /../../../../包括/ 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 /../../../../包括/ 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/vector:63:
的/ usr / local / bin中/../ LIB / GCC / x86_64的-PC-Linux的GNU / 8.1.0 /../../../../包括/ C ++ / 8.1.0 /位/stl_uninitialized.h:128:70: 错误:
中没有名为value
std::is_assignable<int &, int &&>
的成员const bool __assignable = is_assignable<_RefType2, _RefType1>::value; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
的/ usr / local / bin中/../ LIB / GCC / x86_64的-PC-Linux的GNU / 8.1.0 /../../../../包括/ C ++ / 8.1.0 /位/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 /../../../../包括/ C ++ / 8.1.0 /位/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 /../../../../包括/ C ++ / 8.1.0 /位/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 /../../../../包括/ C ++ / 8.1.0 /位/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 /../../../../包括/ C ++ / 8.1.0 /位/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 ++编译相同,没有任何问题。我真的不能看 Clair at Coliru的图书馆标题包括编程以便自己弄清楚。有没有人有任何想法有什么问题以及如何克服这个问题?
答案 0 :(得分:0)
我100%不会担心这一点,这只是科利鲁的一些奇怪现象。它在Wandbox完美地运行,直到回到Clang 3.1
根据donations page,您可以将此问题报告给[电子邮件地址已编辑]。