struct S { static void F(ref S* s){} } void main() { S* s; s.F(); // fails s.F(s); // works } This would be nice for some cases like where the struct has some extra data allocated on at the end and the function might have to reallocate.