On 10/10/2016 12:01 PM, Yuxuan Shui wrote:

Why is there no opIndexDispatch for overloading a[x].func() ?

I could not understand the question fully but would using an element proxy work?

import std.stdio;

struct ElementProxy {
    size_t index;

    void opDispatch(string name, Args...)(Args args) {
writefln("%s() is called for index %s with args %s", name, index, [ args ]);

struct A {
    auto opIndex(size_t index) {
        return ElementProxy(index);

void main() {
    auto a = A();
    a[1].bar("hello", "world");


foo() is called for index 0 with args [42]
bar() is called for index 1 with args ["hello", "world"]


Reply via email to