Author Topic: yatebts build fails for SVN R675 - MSInfo.cpp:641:86: error: no match for ‘op...  (Read 182 times)

kidmose

  • Newbie
  • *
  • Posts: 1
    • View Profile
I'm trying to build yatesbts, but fails with two errors:
(Full log and env details attached and at https://pastebin.com/LRg3UVbH)

Code: [Select]
g++ -Wall   -I../.. -I../.. -I. -I./../CommonLibs -I./../A53 -I./../Connection -I./../GSM -I./../Globals -I./../sqlite3 -I./../Control -I./../CLI -I./../GPRS -I./../Peering -I./../SGSNGGSN -I./../TRXManager -O2 -DLITTLE_ENDIAN -Wno-overloaded-virtual -fPIC -DHAVE_GCC_FORMAT_CHECK -DHAVE_BLOCK_RETURN -I/usr/local/include/yate -DHAVE_CONFIG_H -c  MSInfo.cpp
MSInfo.cpp: In member function ‘bool GPRS::MSInfo::msAssignChannels()’:
MSInfo.cpp:641:86: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘std::ostringstream {aka std::__cxx11::basic_ostringstream<char>}’)
             GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<os;
MSInfo.cpp:641:86: note: candidate: operator<<(int, int) <built-in>
MSInfo.cpp:641:86: note:   no known conversion for argument 2 from ‘std::ostringstream {aka std::__cxx11::basic_ostringstream<char>}’ to ‘int’

and

Code: [Select]
/usr/include/c++/7/iomanip:79:5: note:   template argument deduction/substitution failed:
MSInfo.cpp:641:88: note:   cannot convert ‘os’ (type ‘std::ostringstream {aka std::__cxx11::basic_ostringstream<char>}’) to type ‘std::_Resetiosflags’
             GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<os;
                                                                                        ^~
In file included from /usr/include/c++/7/iostream:39:0,
                 from ./../CommonLibs/Timeval.h:31,
                 from ./../CommonLibs/Interthread.h:29,
                 from MSInfo.h:19,
                 from MSInfo.cpp:17:
/usr/include/c++/7/ostream:682:5: note: candidate: template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type std::operator<<(_Ostream&&, const _Tp&)
     operator<<(_Ostream&& __os, const _Tp& __x)
     ^~~~~~~~
/usr/include/c++/7/ostream:682:5: note:   template argument deduction/substitution failed:
/usr/include/c++/7/ostream: In substitution of ‘template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type std::operator<<(_Ostream&&, const _Tp&) [with _Ostream = std::basic_ostream<char>&; _Tp = std::__cxx11::basic_ostringstream<char>]’:
MSInfo.cpp:641:88:   required from here
/usr/include/c++/7/ostream:682:5: error: no type named ‘type’ in ‘struct std::enable_if<false, std::basic_ostream<char>&>’
/usr/include/c++/7/ostream:574:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*)
     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
     ^~~~~~~~

In the exact same environment, doing the same steps, succeeds for http://yate.null.ro/svn/yate revision 6376 so I'm thinking that yatesbts has some different requirements, perhaps for glibc version?

Any help available on this?


Thanks!