On Friday, 28 April 2017 at 20:43:50 UTC, Alex wrote:
Hi all,
I have a question about the Parameters trait from
https://dlang.org/phobos/std_traits.html#Parameters

The following code does not compile. Why?
Is it mainly assumed to use it with functions without overloads?

Rather, it is to be used on a concrete overload.
If you want to check if two structs are callable with the same parameters, you'll need to iterate opCall overloads for both and look for a match, e.g. like this:

void main()
{
    foreach(o1; __traits(getOverloads, S1, "opCall"))
    {
        alias P1 = Parameters!o1;
        foreach(o2; __traits(getOverloads, S2, "opCall"))
        {
            alias P2 = Parameters!o2;
            static if (is(P1 == P2))
            {
                pragma(msg, "Matching params: "~P1.stringof);
            }
        }
    }
}

Reply via email to