http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52446
Bug #: 52446 Summary: GCC 4.7.0 can't build some templates, but gcc4.6 branch svn can Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: xunxun1...@gmail.com Host: i686-w64-mingw32 Target: i686-w64-mingw32 Build: i686-w64-mingw32 Created attachment 26798 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26798 -E output I found gcc4.7 latest svn can't build codeblocks svn, but gcc4.6 branch svn can. Error log: ------------------------------------------------------------------------------------ g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -Winvalid-pch -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DCB_PRECOMP -DWX_PRECOMP -DwxUSE_UNICODE -fno-inline -iquote.objs\include -I.objs\include -I. -IF:\MyProject\GUI\wxWidgets\WX_2_8_BRANCH\include -IF:\MyProject\GUI\wxWidgets\WX_2_8_BRANCH\contrib\include -IF:\MyProject\GUI\wxWidgets\WX_2_8_BRANCH\lib\gcc_dll\mswu -Isdk\wxscintilla\include -Isdk\wxpropgrid\include -Iinclude\tinyxml -Iinclude\scripting\include -Iinclude\scripting\squirrel -IE:\build\cb\src\sdk\scripting\squirrel -IE:\build\cb\src -c E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp -o .objs\sdk\scripting\squirrel\sqvm.o In file included from include\scripting\squirrel/sqobject.h:5:0, from include\scripting\squirrel/sqpcheader.h:16, from E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp:4: include\scripting\squirrel/squtils.h: In instantiation of 'sqvector<T>::~sqvector() [with T = int]': include\scripting\squirrel/sqclosure.h:83:52: required from here include\scripting\squirrel/squtils.h:38:4: error: 'sq_vm_free' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] In file included from include\scripting\squirrel/sqpcheader.h:17:0, from E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp:4: include\scripting\squirrel/sqstate.h:142:6: note: 'void sq_vm_free(void*, SQUnsignedInteger)' declared here, later in the translation unit In file included from include\scripting\squirrel/sqobject.h:5:0, from include\scripting\squirrel/sqpcheader.h:16, from E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp:4: include\scripting\squirrel/squtils.h: In instantiation of 'void sqvector<T>::_realloc(SQUnsignedInteger) [with T = int; SQUnsignedInteger = unsigned int]': include\scripting\squirrel/squtils.h:45:4: required from 'void sqvector<T>::resize(SQUnsignedInteger, const T&) [with T = int; SQUnsignedInteger = unsigned int]' include\scripting\squirrel/squtils.h:27:3: required from 'void sqvector<T>::copy(const sqvector<T>&) [with T = int]' include\scripting\squirrel/sqclosure.h:97:34: required from here include\scripting\squirrel/squtils.h:97:3: error: 'sq_vm_realloc' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] In file included from include\scripting\squirrel/sqpcheader.h:17:0, from E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp:4: include\scripting\squirrel/sqstate.h:141:7: note: 'void* sq_vm_realloc(void*, SQUnsignedInteger, SQUnsignedInteger)' declared here, later in the translation unit E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp: In member function 'bool SQVM::Execute(SQObjectPtr&, SQInteger, SQInteger, SQInteger, SQObjectPtr&, SQBool, SQVM::ExecutionType)': E:\build\cb\src\sdk\scripting\squirrel\sqvm.cpp:1062:1: warning: control reaches end of non-void function [-Wreturn-type] ------------------------------------------------------------------------------------ And -E output is in the attachment Because I am not familiar with C++, I can't find a little testcase.