On Friday, 8 November 2013 at 02:48:31 UTC, Chris Cain wrote:
Minor tweaks might be necessary, but that should get you started.
Actually, I refactored it a little bit to make it better (original code was just a bit too messy for my taste):
--- struct Vector(int N, T) if (N <= 3) { private T[N] data; private static size_t toOffset(string fieldName) { return cast(size_t)(fieldName[0] - 'x'); } public @property auto opDispatch(string fieldName, Args ...)(Args args) if (Args.length < 2 && fieldName.length == 1 && toOffset(fieldName) < N) { static immutable offset = toOffset(fieldName); static if(Args.length == 0) { // getter return data[offset]; } else { // setter data[offset] = args[0]; } } } ---