On Tuesday, 27 October 2020 at 10:41:06 UTC, Jacob Carlborg wrote:
On Tuesday, 27 October 2020 at 09:40:33 UTC, frame wrote:

Hmm, a question of design. Is there also a convenient way to pass the arguments to a template or get a Variant[] from it?

Convenient, no not that I know of. You can use a type safe variadic function that takes Variant, if you want to end up with Variant[] anyway. It depends on how you want the API to look like. Here are some examples:

void foo(...);
void bar(Variant[] args ...);

foo(3, "foo", 'a'); // pass in the arguments as is
bar(Variant(3), Variant("foo"), Variant('a')); // need to wrap each argument in Variant

The advantage of using the type safe variadic function is that all the arguments are bundle into one array, make it easier to work with.

--
/Jacob Carlborg

I tried the (...) thing - I ran into access violation by passing a slice like:

if (_arguments[i] == typeid(ubyte[])) {
  auto foo = va_arg!(ubyte[])(_argptr);
}

The same is working with variadic template. I am missing something?


Reply via email to