On 5/15/12 8:16 AM, Manu wrote:
Okay, here's another problem due to ref not being a type constructor.
If I have some function that receives an argument by ref, and then I
take parameterTypeTuple! of that functions parameter list, the ref bits
are gone from the typetuple.
If I give that tuple as a template arg, then the template parameters no
longer match the function it's wrapping...

Correct. That means there needs to be an additional trait that tells which parameters of a function are ref.

I'm still thinking more and more that there's no solution to all the
problems with ref, other than changing it to use the syntax: ref(type),
and be a type constructor, like const/immutable/shared/etc...
I have problems with ref almost every day. If not in templates, in
function/delegate definitions, and the prior issues previously discussed..

No matter how I look at it, 'ref' really should be a type constructor.

Ref on a parameter or the return value is a property of the function, not a property of the parameter.

The use of 'ref' fundamentally changes the variable from T to T*, that's
a critical difference, and can't just be lost when taking the typeof
something.

Ref int is not int*, for example you can do x[0 .. 1] on a pointer but not on a reference. Ref fundamentally dictates how the parameter binds to the argument; otherwise, it doesn't affect the behavior of the parameter's type itself.

To lift this one level up, what problem are you trying to solve?


Andrei

Reply via email to