Allright, thanks! For some reason I decided to discard the ::Type when
reading that warning, sorry for the noise.

Cheers,

Bart

On Thu, Jun 30, 2016 at 8:53 AM Mauro <mauro...@runbox.com> wrote:

> Basically the transform is: move first argument to where `call` was
> (note that the function parameters stay):
>
> call{T,Y}(::Type{A{I,T}}, t::T, y::Y) = ...
> (::Type{A{I,T}}){T,Y}(t::T, y::Y) = ...
>
> On Wed, 2016-06-29 at 23:59, Yichao Yu <yyc1...@gmail.com> wrote:
> > On Wed, Jun 29, 2016 at 5:46 PM, Bart Janssens <b...@bartjanssens.org>
> wrote:
> >>
> >> Hi all,
> >>
> >> I'm having some trouble adapting CxxWrap to the new constructor syntax
> (as
> >> opposed to adding call(::Type{...) methods in 0.4). The error is
> equivalent
> >> to the following pure Julia example:
> >>
> >> type MT{T}
> >>        msg::String
> >> end
> >>
> >> julia> MT{Float64}() = MT{Float64}("float")
> >> WARNING: static parameter Float64 does not occur in signature for Type
> at
> >> REPL[67]:1.
> >> The method will not be callable.
> >
> > Follow the depwarn
> >
> > julia> type MT{T}
> >            msg::String
> >        end
> >
> > julia> call(::Type{MT{Float64}}) = MT{Float64}("float")
> >
> > WARNING: deprecated syntax "call(::Type{MT{Float64}}, ...)".
> > Use "(::Type{MT{Float64}})(...)" instead.
> >
> >
> >>
> >> And indeed:
> >>
> >> julia> MT{Float64}()
> >> ERROR: MethodError: no method matching MT{Float64}()
> >>
> >> The old syntax still works:
> >> julia> call(::Type{MT{Float64}}) = MT{Float64}("float")
> >> julia> MT{Float64}()
> >> MT{Float64}("float")
> >>
> >> Is there any way around this? Wrapping C++ template types requires
> >> specifying the template types in the constructor for all compiled-in
> types.
> >>
> >> Cheers,
> >>
> >> Bart
>

Reply via email to