0

看这里。 该程序非常平凡,例如:

#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/ 中包含的文件中位/stl_algobase.h:64:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中位/stl_pair.h:59:

在 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/ 中包含的文件中位/move.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:错误:没有指定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/../../../../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)); }
    ^

std::vector<int, std::allocator<int> >::push_backmain.cpp:7:9:注意:在此处请求的成员函数的实例化中

bombs.push_back(42);
      ^

产生 4 个错误。

与 g++ 编译相同,没有任何问题。我真的无法查看 Coliru 的 Clang 包含的库头文件,以便我自己进行编程。有谁知道什么是错的以及如何克服这个问题?

4

1 回答 1

0

我 100% 不会担心这个,这只是 Coliru 的一些奇怪之处。它在Wandbox完美运行,回到 Clang 3.1

根据捐赠页面,您可能可以将此问题报告给 [email address redacted]。

于 2018-06-16T21:40:11.603 回答