[Cython] Non-type template parameters
Robert Bradshaw
robertwb at gmail.com
Tue Jul 28 09:35:51 CEST 2015
Sorry for not getting back sooner... responses below.
On Mon, Jul 20, 2015 at 2:06 PM, Ian Henriksen
<insertinterestingnamehere at gmail.com> wrote:
> Hi all,
> I've spent a little time working on adding support for non-type
> template parameters. In doing this, it has been very easy to add
> support for doing something like the following:
>
> cdef extern from "add_const.hpp" nogil:
> int myfunc1[i](int)
> def test():
> print myfunc1[2](a)
>
> The downside of this is that it does not let the Cython compiler
> distinguish between different kinds of template parameters.
>
> Stricter checking could be added using a syntax like this:
>
> cdef extern from "add_const.hpp" nogil:
> int myfunc1[int i](int)
> def test():
> print myfunc1[2](a)
>
> The downsides here are that the syntax doesn't really match the
> existing template syntax. It will also complicate the Cython codebase
> since we'll have to go to greater lengths to allow or disallow all the
> different special cases for templates.
>
> Which version would be preferable?
I think I'd prefer the [int i] syntax. Hopefully it shouldn't
complicate things too much.
> On a similar note, for variadic templates, would we prefer something
> like
>
> cdef extern from "my_variadic.hpp" nogil:
> T myfunc2[T,...](T, ...)
>
> or something like:
>
> cdef extern from "my_variadic.hpp" nogil:
> T myfunc2[T, Types...](T, Types... args)
>
> Again, the latter syntax is more explicit, but it will require much more
> complicated code in Cython. It also doesn't match the existing syntax
> very well. The former syntax matches the existing syntax for templates
> better, but will make it hard for Cython to raise errors early on in
> compilation.
Hmm... this is a tougher call. Let's go with the former for now.
> I'd greatly appreciate any input on the best syntax for either use-case.
>
> Regards,
>
> -Ian Henriksen
>
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> https://mail.python.org/mailman/listinfo/cython-devel
>
More information about the cython-devel
mailing list