compile errors

John Ralls jralls at ceridwen.us
Fri Nov 18 19:50:53 EST 2016


> On Nov 18, 2016, at 2:49 PM, John Ralls <jralls at ceridwen.us> wrote:
> 
> 
>> On Nov 18, 2016, at 12:53 PM, Alex Aycinena <alex.aycinena at gmail.com> wrote:
>> 
>> 
>> 
>> On Thu, Nov 17, 2016 at 5:10 PM, John Ralls <jralls at ceridwen.us <mailto:jralls at ceridwen.us>> wrote:
>> 
>>> On Nov 17, 2016, at 4:54 PM, Alex Aycinena <alex.aycinena at gmail.com <mailto:alex.aycinena at gmail.com>> wrote:
>>> 
>>> Hi,
>>> 
>>> I get the following compile errors today:
>>> 
>> <snip>
>>> 
>>> Am I missing a library or something?
>> 
>> Alex,
>> 
>> That didn't take long! ;-)
>> 
>> Only if your compiler doesn't support C++11. More likely your libstdc++ doesn't pull in <Algorithms> when <String> is included.
>> 
>> Travis puked test-backend-dbi-basic.c for a similar complaint, this one for std::for_each. I've just pushed what I hope will fix that and your error.
>> 
>> Regards,
>> John Ralls
>> 
>> 
>> John,
>> 
>> After pulling in your push, I now get:
>> 
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbiproviderimpl.hpp: In member function ‘StrVec GncDbiProviderImpl<T>::get_table_list(dbi_conn, const string&) [with DbType T = (DbType)0; StrVec = std::vector<std::__cxx11::basic_string<char> >; dbi_conn = void*; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbiproviderimpl.hpp:245:71: error: cannot convert ‘std::vector<std::__cxx11::basic_string<char> >::iterator {aka __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >}’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’
>>     auto end = std::remove(list.begin(), list.end(), "sqlite_sequence");
>>                                                                       ^
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbiproviderimpl.hpp: In member function ‘StrVec GncDbiProviderImpl<T>::get_table_list(dbi_conn, const string&) [with DbType T = (DbType)2; StrVec = std::vector<std::__cxx11::basic_string<char> >; dbi_conn = void*; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbiproviderimpl.hpp:266:16: error: ‘remove_if’ is not a member of ‘std’
>>     auto end = std::remove_if (list.begin(), list.end(),
>>                ^~~
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbisqlconnection.cpp: In member function ‘bool GncDbiSqlConnection::table_operation(const StrVec&, TableOpType)’:
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbisqlconnection.cpp:655:54: error: no matching function for call to ‘find(std::vector<std::__cxx11::basic_string<char> >::iterator, std::vector<std::__cxx11::basic_string<char> >::iterator, std::__cxx11::basic_string<char>&)’
>>                               all_tables.end(), table) != all_tables.end())
>>                                                      ^
>> In file included from /usr/include/c++/6.2.1/bits/locale_facets.h:48:0,
>>                 from /usr/include/c++/6.2.1/bits/basic_ios.h:37,
>>                 from /usr/include/c++/6.2.1/ios:44,
>>                 from /usr/include/c++/6.2.1/istream:38,
>>                 from /usr/include/c++/6.2.1/sstream:38,
>>                 from /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/sql/gnc-sql-backend.hpp:35,
>>                 from /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-backend-dbi.hpp:37,
>>                 from /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbisqlconnection.hpp:30,
>>                 from /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbisqlconnection.cpp:31:
>> /usr/include/c++/6.2.1/bits/streambuf_iterator.h:369:5: note: candidate: template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT> >::__type std::find(std::istreambuf_iterator<_CharT>, std::istreambuf_iterator<_CharT>, const _CharT2&)
>>     find(istreambuf_iterator<_CharT> __first,
>>     ^~~~
>> /usr/include/c++/6.2.1/bits/streambuf_iterator.h:369:5: note:   template argument deduction/substitution failed:
>> /home/gnucash-dev/gitcheckouts/gnucash-clean/src/backend/dbi/gnc-dbisqlconnection.cpp:655:54: note:   ‘__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >’ is not derived from ‘std::istreambuf_iterator<_CharT>’
>>                               all_tables.end(), table) != all_tables.end())
>>                                                      ^
>> At global scope:
>> cc1plus: error: unrecognized command line option ‘-Wno-deprecated-register’ [-Werror]
>> cc1plus: all warnings being treated as errors
>> Makefile:678: recipe for target 'gnc-dbisqlconnection.lo' failed
>> 
>> 
>> I'm building on Fedora 24, by the way.
> 
> Alex,
> 
> My first guess would be that gnc-dbiproviderimpl.hpp and gnc-dbisqlconnection.hpp need the same treatment, to add "#include <algorithm> to the other libstdc++ headers. I'll have to set up a fedora24 VM to duplicate your build environment, so it will take a few hours to be sure.
> 

Alex,

Done and pushed.

Regards,
John Ralls





More information about the gnucash-devel mailing list