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
_______________________________________________
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel

Reply via email to