#include <iostream>

struct MyType
{
    operator size_t(){return 0;}
    MyType &operator[](size_t){return*this;}
};

int main()
{
    int a[] = {1, 2}, b = 0;
    MyType mt;
    std::cout << mt[a] << std::endl;
    //std::cout << b[mt] << std::endl;
    std::cout << mt[mt] << std::endl;
}
