From: Martin C. <cos...@wa...> - 2011-09-11 17:06:28
|
On 11/09/11 15:36, Alexander Hansen wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > I'm working on moving LyX (specifically the "lyx2" packages) over to > Lion, but I've got a C++ issue. > > I get the following error from clang: > > ... > In file included from Lexer.cpp:16: > ./Lexer.h:225:13: error: implicit instantiation of undefined template > 'std::basic_string<char, std::char_traits<char>, > std::allocator<char> >' > t = T(lex.getString()); > ^ > ./support/strfwd.h:42:64: note: template is declared here > template<typename Char, typename Traits, typename Alloc> class > basic_string; There is some noise on google on this kind of things, for example <http://llvm.org/bugs/show_bug.cgi?id=10521> which seems to imply that the whole strfwd.h stuff is illegal, but tolerated by earlier compilers. [] > which I had thought meant that the template _should_ be declared for > Lexer.h, and thus for Lexer.cpp . It is declared, but not defined. I don't know enough C++ to see why they don't simply #include<string> before (or instead of) their strfwd.h. What happens if you do this at the beginning of strfwd.h? Otherwise, I suspect this is one of the packages that will need to use llvm instead of clang. -- Martin |