[Cython] Appending a dict to a struct vector creates invalid code
Joonas Paalasmaa
joonas.paalasmaa at gmail.com
Thu Sep 12 07:46:43 CEST 2013
Hello,
I am appending Python dict objects to a C++ vector of structs. If it
is done implicitly (calling v.push_back(dict_object)), Cython creates
C++ code that does not compile. If dict_object has been cdef'd to be
of the struct type, everything works. I am using version cf75e9eb7e
from the master branch.
Here is the code for reproducing the problem
# cythonbug.pyx
from libcpp.vector cimport vector
ctypedef struct test_struct:
int a
int b
def main():
cdef vector[test_struct] test_vector
# cdef test_struct dict_object # Uncommenting this avoids the bug
dict_object = {"a": 0, "b": 1}
test_vector.push_back(dict_object)
# end cythonbug.pyx
The C++ output from "cython --cplus cythonbug.pyx" contains the
statement "__pyx_t_9cythonbug_test_struct;" which GCC complains about:
"error: declaration does not declare anything [-fpermissive]".
Best wishes,
Joonas Paalasmaa
More information about the cython-devel
mailing list