std.boxer and arrays
Brad Roberts
braddr at puremagic.com
Wed Oct 17 00:19:27 PDT 2007
Aarti_pl wrote:
> Bill Baxter pisze:
>> Marcin Kuszczak wrote:
>>> Walter Bright wrote:
>>>
>>>> Carlos Santander wrote:
>>>>> Maybe I missed something, but does the inclusion of std.variant mean
>>>>> that std.boxer will be deprecated or removed at some point?
>>>>
>>>> Yes. If you're using boxer, take a serious look at variant, and see if
>>>> that works for you.
>>>
>>> There is missing functionality in variant though. I mean converting
>>> variadic
>>> function parameters into array of Boxes. It's nice, so it should be
>>> retained IMHO.
>>
>> I just used std.boxer for the first time recently.
>> The thing that I found missing was methods for working with and
>> converting boxed arrays (*not* arrays of boxes). You can only
>> unconvert to the exact type of the original, and there's no overloaded
>> opIndex or getElem/setElem functions. No way to ask what the type of
>> an element is either. I wrote some templates that did the trick for
>> what I wanted, but I had to copy a few private things out of std.boxer
>> to do it. I'd file an enhancement request and maybe even a patch if I
>> believed anyone would do anything about it.
>>
>> --bb
>>
>>
>
> You are lucky then :-)
> It seems that std.variant from D 2.0 has such a functionality...
>
> ----
>
> With boxing of variadic parameters I meant something like this:
>
> # void func(...) {
> # Box[] barr = boxArray(_arguments, _argptr);
> # }
>
> It can be usefull e.g. for repassing arguments to other function.
>
> BR
> Marcin Kuszczak
Take a closer look. Std/variant.d contains:
Variant[] variantArray(T...)(T args)
{
Variant[] result;
foreach (arg; args)
{
result ~= Variant(arg);
}
return result;
}
It's a template rather than using the variadic options, but the end
result is the same.
More information about the Digitalmars-d
mailing list