I have a class like this:

struct S { }

class A
{
        @(S)
        {
                int a;
                string b() { return ib; }
                string b(string s) { return ib = s;}
        }

        int x;
        int y;

        string ib = "lol";
}

where I want to list the members that have S UDA but it failing to compare string b() { ... }. How do I do this?

current code:


        import std.traits : hasUDA;
        string[] arr;
        static foreach(member; __traits(allMembers, A))
        {
                static if(hasUDA!(__traits(getMember, A, member), S))
                {
                        pragma(msg, typeof(__traits(getMember, A, member)));
static if(is(typeof(__traits(getMember, A, member)) == string function(string)))
                        {
                                arr ~= member;
                        }
                }       
        }
        writeln(arr);


arr is empty

Reply via email to