Использование контейнера std с uint64_t в QNX 660 с GCC 4.9.3 - PullRequest
0 голосов
/ 15 мая 2019

Я получаю ошибку компилятора на QNX 660 с GCC 4.9.3 при создании экземпляра контейнера std, такого как std :: list с типом uint64_t.


#include <iostream>
#include <list>
#include <stdint.h>

int main()
{
   typedef std::list<uint64_t> list_type;
   list_type list;
   for(int i=0; i<10; i++){ list.push_back(i); }

   for(list_type::iterator it = list.begin(); it != list.end(); it++)
   { std::cout<<*it<<std::endl; }

   return 0;
}

Ошибка компилятора, которую я получаю:

/opt/qnx660_493/target/qnx6/usr/include/c++/4.9.3/ext/new_allocator.h:93:7: error: 'const _Tp* __gnu_cxx::new_allocator<_Tp>::address(__gnu_cxx::new_allocator<_Tp>::const_reference) const [with _Tp = long long unsigned int; __gnu_cxx::new_allocator<_Tp>::const_pointer = const long long unsigned int*; __gnu_cxx::new_allocator<_Tp>::const_reference = const long long unsigned int&]' cannot be overloaded
       address(const_reference __x) const _GLIBCXX_NOEXCEPT
       ^
/opt/qnx660_493/target/qnx6/usr/include/c++/4.9.3/ext/new_allocator.h:89:7: error: with '_Tp* __gnu_cxx::new_allocator<_Tp>::address(__gnu_cxx::new_allocator<_Tp>::reference) const [with _Tp = long long unsigned int; __gnu_cxx::new_allocator<_Tp>::pointer = long long unsigned int*; __gnu_cxx::new_allocator<_Tp>::reference = long long unsigned int&]'
       address(reference __x) const _GLIBCXX_NOEXCEPT

Я не получаю эту ошибку с gcc-4.9.3 в Linux (Ubuntu 16.04).Я также не получаю ошибку с gcc-4.7.3 на QNX 660. Также с int64_t на QNX 660 и GCC 4.9.3 я не получаю ошибку компилятора.Только сочетание uint64_t с GCC 4.9.3 на QNX 660 приводит к этой ошибке компилятора.

...