Зачем нужен this параметр произвольного типа?
При указании this параметра можно указать произвольный тип, а не только тип класса. Зачем это сделано? Как это можно использовать?
struct A {
void foo(this A self); // OK
void bar(this int self); // OK, but why?
};