Cython: ошибка добавления комплекса в double

Согласно libcpp/complex.pxd добавляется T к complex[T] :

  complex[T] operator+(complex[T]&, T&) complex[T] operator+(T&, complex[T]&) 

Но это не работает:

a.pyx:

 # distutils: language = c++ cimport libcpp.complex def f(): libcpp.complex.complex[double](1,2) + libcpp.complex.complex[double](2,3) # ok libcpp.complex.complex[double](1,2) + 5. # Cannot assign type 'double' to 'complex[double]' 5. + libcpp.complex.complex[double](1,2) # Invalid operand types for '+' (double; complex[double]) 

setup.pyx:

 from distutils.core import setup from Cython.Build import cythonize setup( name = "demo", ext_modules = cythonize('a.pyx'), ) 

Идея, как это исправить?

Перемещение декларации

 complex[T] operator+(complex[T]&, T&) 

из cppclass и сменить его на

 complex[T] operator+[T](complex[T]&, T&) 

выглядит более легальным, но все равно не работает.

One Solution collect form web for “Cython: ошибка добавления комплекса в double”

У меня это работает. См. Билет cython https://github.com/cython/cython/issues/1643

Это комбинация перемещения

 complex[T] operator+(complex[T]&, T&) 

из определения cppclass, изменив его на

 complex[T] operator+[T](complex[T]&, T&) 

как было предложено в этом вопросе, и @ DavidW's идея cimport *

  • Есть ли какой-либо тип функции в Cython?
  • Обтекание пользовательского типа указателем C ++ в Cython
  • Wrap C struct с элементом массива для доступа в python: SWIG? Cython? ctypes?
  • Команда `python setup.py build_ext --inplace` всегда создает новый каталог
  • Может ли Cython скомпилировать EXE?
  • Noob-Ready Cython Tutorials
  • Cython: cimport и import numpy как (оба) np
  • Cython-Can not open include file: 'io.h': нет такого файла или каталога
  • Быстрое (er) причудливое индексирование и сокращение?
  • cython с массивом указателей
  • Сделать distutils искать файлы заголовков numpy в правильном месте
  • Python - лучший язык программирования в мире.