From: SourceForge.net <no...@so...> - 2012-06-30 19:44:00
|
Bugs item #3520002, was opened at 2012-04-20 19:16 Message generated for change (Comment added) made by wsfulton You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=3520002&group_id=1645 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: code generation (general) Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: HighCommander4 (highcommander4) Assigned to: Nobody/Anonymous (nobody) Summary: Compiler error with C++ using declarations Initial Comment: I can successfully wrap the following C++ file, called test_vector.hpp: #include <string> #include <vector> using std::string; using std::vector; struct S { string a; vector<int> b; }; using the following interface file: %module test_vector %{ #include "test_vector.hpp" %} %include "std_vector.i" %include "std_string.i" %include "test_vector.hpp" and the following commands: swig -php -c++ test_vector.ig++ `php-config5 --includes` -fpic -c test_vector_wrap.cpp However, if I add an enclosing namespace, as follows: #include <string> #include <vector> namespace N { using std::string; using std::vector; struct S { string a; vector<int> b; }; } and try to compile with the same interface file and commands, the second command gives the following errors: test_vector_wrap.cpp: In function ‘void _wrap_S_b_set(int, zval*, zval**, zval*, int)’: test_vector_wrap.cpp:1201:3: error: ‘vector’ was not declared in this scope test_vector_wrap.cpp:1201:3: note: suggested alternatives:/usr/include/c++/4.6/bits/stl_vector.h:180:11: note: ‘std::vector’/usr/include/c++/4.6/bits/stl_vector.h:180:11: note: ‘std::vector’ test_vector_wrap.cpp:1201:11: error: expected primary-expression before ‘int’ test_vector_wrap.cpp:1201:11: error: expected ‘;’ before ‘int’ test_vector_wrap.cpp:1202:11: error: expected primary-expression before ‘int’ test_vector_wrap.cpp:1202:11: error: expected ‘;’ before ‘int’ test_vector_wrap.cpp:1217:8: error: ‘tmp2’ was not declared in this scope test_vector_wrap.cpp:1220:5: error: ‘arg2’ was not declared in this scope test_vector_wrap.cpp:1220:13: error: ‘tmp2’ was not declared in this scope test_vector_wrap.cpp:1222:25: error: ‘arg2’ was not declared in this scope test_vector_wrap.cpp: In function ‘void _wrap_S_b_get(int, zval*, zval**, zval*, int)’: test_vector_wrap.cpp:1233:3: error: ‘vector’ was not declared in this scope test_vector_wrap.cpp:1233:3: note: suggested alternatives: /usr/include/c++/4.6/bits/stl_vector.h:180:11: note: ‘std::vector’ /usr/include/c++/4.6/bits/stl_vector.h:180:11: note: ‘std::vector’ test_vector_wrap.cpp:1233:11: error: expected primary-expression before ‘int’ test_vector_wrap.cpp:1233:11: error: expected ‘;’ before ‘int’ test_vector_wrap.cpp:1246:3: error: ‘result’ was not declared in this scope test_vector_wrap.cpp:1248:13: error: expected primary-expression before ‘int’ test_vector_wrap.cpp:1248:13: error: expected ‘;’ before ‘int’ test_vector_wrap.cpp:1249:5: error: ‘resultobj’ was not declared in this scope Interestingly, I do not get any errors about string, even though my code treatsstring and vector exactly the same. ---------------------------------------------------------------------- >Comment By: William Fulton (wsfulton) Date: 2012-06-30 12:44 Message: Looks related to #3497393 ---------------------------------------------------------------------- Comment By: William Fulton (wsfulton) Date: 2012-04-28 07:38 Message: There are a few simiilar bugs wrt using 'using'. Workaround is to avoid it for now. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=3520002&group_id=1645 |