On Tuesday, 2 February 2016 at 03:36:25 UTC, Steven Schveighoffer wrote:
S has 3 different properties, x, y, z:

struct S
{
   int x;
   int y() { return 1;}
}

int z(S s) { return 1;}

pragma(msg, typeof(S.init.x).stringof); // int
pragma(msg, typeof(S.init.y).stringof); // int()
pragma(msg, typeof(S.init.z).stringof); // int

Is there a trait I can call/use to consistently get "int" from all 3?

-Steve

import std.traits, std.stdio;

alias PropertyType(T, string property) =
        ReturnType!(function(T x) { return mixin("x." ~ property); });

struct S
{
   int x;
   int y() { return 1;}
}

int z(S s) { return 1;}

void main() {
        writeln(PropertyType!(S, "x").stringof);
        writeln(PropertyType!(S, "y").stringof);
        writeln(PropertyType!(S, "z").stringof);
}

(DPaste: http://dpaste.dzfl.pl/0b03bc8ea11f)

Reply via email to