Ich bin es gewohnt, C++-Programme zu erstellen und es in Cython zu bekommen, aber hier versuche ich, C++ 11 zu bekommen array
und es geht definitiv nicht.
Hier ist meine .pxd:
cdef extern from "<array>" namespace "std" nogil :
cdef cppclass array[T, size_t]:
ctypedef T value_type
cppclass iterator:
T& operator*()
iterator operator++()
iterator operator--()
iterator operator+(size_t)
iterator operator-(size_t)
bint operator==(iterator)
bint operator!=(iterator)
bint operator<(iterator)
bint operator>(iterator)
bint operator<=(iterator)
bint operator>=(iterator)
T& operator[](size_t)
array() except +
array(array&) except +
Der größte Teil dieser Datei ist eine Adaption von “vector.pxd”, aber ich habe den Allocator entfernt, weil c++11 array
braucht es nicht. ich benutzte size_t
als zweites Vorlagenargument, aber ich bin mir nicht sicher.
Das Problem ist, wenn ich tue:
from array11 cimport array
cdef array[int, 5] test
Ich bekomme beim Kompilieren:
unbekannter Typ im Template-Argument
Wenn ich mache :
from array11 cimport array
cdef array[int, 5] * test = new array[int, 5]()
Ich bekomme :
new-Operator kann nur auf eine C++-Klasse angewendet werden
Irgendeine Idee, was ich falsch mache?
Vielen Dank!
Unterstützt Cython Nicht-Typ-Vorlagen?
– AndyG
16. Dezember 2016 um 20:29 Uhr
Es könnte die richtige Frage sein!
– Jean-Baptiste F.
16. Dezember 2016 um 20:45 Uhr
@AndyG Nein, es werden keine Nicht-Typ-Vorlagen unterstützt
– DavidW
17. Dezember 2016 um 8:52 Uhr
Andere Leute haben sich jedoch etwas zufriedenstellende Problemumgehungen ausgedacht. Werfen Sie einen Blick auf das Wesentliche von stackoverflow.com/questions/36357024/…
– DavidW
17. Dezember 2016 um 8:57 Uhr
Es gibt also keine Möglichkeit, std::array ohne feste Größe in der .pxd zu implementieren?
– Jean-Baptiste F.
17. Dezember 2016 um 9:12 Uhr