I may know the answer but I can't be sure because you don't provide code that reproduces the issue.

I am trying to write code below according to your description but it's really tough. Can you reproduce the issue please.

// T         = some class
// T is not a good name because it is usually used template parameters
class T {
  static U!int data = 42;
}

// S         = "data" (data is member of T)
auto S = T.data;
// typeof(S) = some struct U!X, not void

// WAIT! Another S? You're asking for trouble. :D
alias S = __traits(getMember, T, property);

static if (isCallable!S) {
    // some other magic
}

// WAIT! So, this is U?
struct U(T) {
  T get() {
        static if (is(T : X)) {
            if (value is null) {
                // load value
            }
        }
        return value;
  }

  T value;
  alias get this;
}

void main() {
}

Ali

Reply via email to