compile errors
John Ralls
jralls at ceridwen.us
Fri Nov 18 17:49:00 EST 2016
> 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.
Regards,
John Ralls
More information about the gnucash-devel
mailing list