digitalmars.D - Are Tuples as lvalues supposed to be supported?
- Russell Lewis <webmaster villagersonline.com> Jul 31 2007
- BCS <ao pathlink.com> Jul 31 2007
- BCS <ao pathlink.com> Jul 31 2007
- BCS <ao pathlink.com> Aug 02 2007
I thought that I was supposed to be able to use a Tuple as an lvalue in
a struct, such as:
struct Encapsulate(U...) { U val; }
void Foo(U...)(U args) {
Encapsulate!(U) temp;
temp.val = args;
}
However, when I instantiate Foo, I get the error:
Error: temp.val is not an lvalue.
So, I looked on the website, and didn't find a statement that I could do
this. So I'm asking: is this a 2.0 feature, or is the lack of it a bug?
Russ
P.S. The lack of this is going to make it rather annoying to build a
Curry() template which takes multiple arguments. I will have to either
implement many different Curry templates with different numbers of
arguments, or else nest them...
Jul 31 2007
Reply to Russell,I thought that I was supposed to be able to use a Tuple as an lvalue in a struct, such as: struct Encapsulate(U...) { U val; } void Foo(U...)(U args) { Encapsulate!(U) temp; temp.val = args; } However, when I instantiate Foo, I get the error: Error: temp.val is not an lvalue. So, I looked on the website, and didn't find a statement that I could do this. So I'm asking: is this a 2.0 feature, or is the lack of it a bug? Russ P.S. The lack of this is going to make it rather annoying to build a Curry() template which takes multiple arguments. I will have to either implement many different Curry templates with different numbers of arguments, or else nest them...
Do it one part at a time (note that the foreach is unrolled at compile time). struct Encapsulate(U...) { U val; } void Foo(U...)(U args) { Encapsulate!(U) temp; foreach(int i,_;U) temp.val[i] = args[i]; } BTW if you just need a curry template I have a compile time one you might like: http://www.dsource.org/projects/scrapple/browser/trunk/arg_bind/bind.d If you need run time currying I might be able to hack that over lunch.
Jul 31 2007
Reply to Benjamin,Reply to Russell, http://www.dsource.org/projects/scrapple/browser/trunk/arg_bind/bind.d If you need run time currying I might be able to hack that over lunch.
done take a look at the unittest to see how it gets used.
Jul 31 2007
Reply to Benjamin,Reply to Benjamin,Reply to Russell, http://www.dsource.org/projects/scrapple/browser/trunk/arg_bind/bind. d If you need run time currying I might be able to hack that over lunch.
take a look at the unittest to see how it gets used.
Oops, botched the commit, it's there now.
Aug 02 2007








BCS <ao pathlink.com>