Почему Clang в Coliru не может скомпилировать 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/vector:60:

В файле из
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_algobase. ч: 64:

В файле из
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_pair. ч: 59:

В файле из
/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/move. ч: 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/vector:63:

/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/8.1.0/../../../../include/c++/8.1.0/bits/stl_uninitialized. ч: 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. ч: 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. ч: 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. ч: одна тысяча девяносто один: 9:
примечание: в реализации специализации шаблона функции
std::vector<int, std::allocator<int> >::emplace_back<int> запрошенный
Вот

  { emplace_back(std::move(__x)); }
^

main.cpp: 7: 9: note: в экземпляре функции-члена
std::vector<int, std::allocator<int> >::push_back просили здесь

bombs.push_back(42);
^

4 ошибки сгенерированы.

То же самое с компиляцией g ++ без проблем. Я не могу смотреть на
Заголовки библиотеки, которые Clang в Coliru включает в себя, чтобы понять это самостоятельно. У кого-нибудь есть идеи, что не так и как преодолеть проблему?

0

Решение

Я бы на 100% не беспокоился об этом, это просто странность в Колиру. Это прекрасно работает на Wandbox, Вернемся к Clang 3.1

Согласно страница пожертвований, Вы, вероятно, можете сообщить об этой проблеме [адрес электронной почты отредактирован].

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]