digitalmars.D - Are Tuples as lvalues supposed to be supported?
- Russell Lewis (16/16) Jul 31 2007 I thought that I was supposed to be able to use a Tuple as an lvalue in
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,Oops, botched the commit, it's there now.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.
Aug 02 2007








BCS <ao pathlink.com>