Anonymous 09/15/2021 (Wed) 12:26:00 No.12918 del
(31.10 KB 434x756 laisi.png)
(99.32 KB 648x857 llvm ir.png)
Оуфигеть, еле скомпилировал пикрилейтед.
В итоге ввёл большую часть класса, ещё и self-тип. Можете поглядеть на LLVM IR, если поймёте что-то. Что закоментировано тоже работает, проверил.
В классах надо ещё ввести передачу self*. Потом пора будет переходить к перегрузке функций и операторов. В частости, внутри классов можно будет писать методы для перегрузки init, del, index, get, set и другие одноаргументные.
Перегружать операторы сложения, умножения и прочих двуаргументных как-то мне видится некрасивым. Лучше их писать отдельно, к тому же те же вектора math.vec надо иметь возможность складывать, у которых разные подтипы. Например vec3<ssize> и vec3<float> и написать просто template with V0(vec!N!<T0>),V1(vec!N!<T1>) func (V0 out,[V0 in0,V1 in1])...
А в случае именованных классов это же на самом деле макросы, представляющие из себя дженерики и если сделать add методом, то можно, чтобы только один тип самого себя принимался.

только заметил, что функция метода называется .m0, а не abc.m0, надо исправить