http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48169
Summary: compiler is confused about scope Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: pet...@silvaco.com Created attachment 23695 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23695 gzipped .ii file The compiler seems to get totally confused about scope. Here comes the error message: In file included from VerilogA/src/vsLexer/../../include/vsParser/vsYYparse.H:22:0, from vsVeriSmartLex.cxx:1652: VerilogA/src/vsLexer/../../include/vsParser/../vsExpr/vsExpr.H: In member function ‘virtual CVectorOfVisited CTwoArgumentOperator<P, BCOMMUTATIVE, KIND, TYPE, CREATEFROMCHILDREN, BDERIVE, DERIVE, GETPOTENTIALREPRESENTATIONS, TYPE_FLAGS>::getPotentialRepresentations(const visited*, silvaco::verilogCompiler::CVerilogCompilerArgs*) const’: VerilogA/src/vsLexer/../../include/vsParser/../vsExpr/vsExpr.H:1985:22: error: too few arguments to function ‘int clone(int (*)(void*), void*, int, void*)’ /usr/include/bits/sched.h:71:12: note: declared here VerilogA/src/vsLexer/../../include/vsParser/../vsExpr/vsExpr.H:1987:25: error: ‘m_sChildren’ was not declared in this scope VerilogA/src/vsLexer/../../include/vsParser/../vsExpr/vsExpr.H:1989:52: error: there are no arguments to ‘createFromChildren1’ that depend on a template parameter, so a declaration of ‘createFromChildren1’ must be available VerilogA/src/vsLexer/../../include/vsParser/../vsExpr/vsExpr.H:1989:52: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) To make this compileable, simply add a this-> in front of every member object or method: clone, m_sChildren, createFromChildren1