How do I "call" opDispatch(string name, E...)(E elements) ?
What I want to archive is to call f.i. fm.list with an arbitrary number of arguments without using

fm.list(1, "abc", 4L, 3.33);

Instead I would prefer
fm.list = (1, "abc", 4L, 3.33);

Is this somehow possible ?

import std.variant;
import std.conv;
....
auto fm = FlexMap();

fm.ten = 10;
fm.ten = ["Ten", "Zehn", "Tein"];
fm.list = [20, 10, 2, 2, 44 ] ;
fm.list = "Hello opDispatch";

struct FlexMap
{
    Variant[] [string] map;

    Variant[] opDispatch(string name)()
    {
       return map[name];
    }
        
    Variant[] opDispatch(string name, E...)(E elements)
    {
        foreach(element; elements)
                map[name] ~= to!Variant(element);
        return map[name];
    }
        
    Variant[] opDispatch(string name, T) (T t)
    {
        map[name] ~= to!Variant(t);
        return map[name];
    }           
}



Another question :
How do I bring in :

opDispatch(string name, T) (T[] t)

into FlexMap ?

TIA, Bjoern

Reply via email to