Miles wrote:
---------
int func1() { return 1; }
auto a = func1; // 'a' is a pointer to func1
auto b = &func1; // ERROR, or deprecated way of above
auto c = func1(); // calls func1 and returns int 1
int function() func2 = func1;
auto d = func2; // 'd' is a pointer to func1
auto e = &func2; // 'e' is a ptr to ptr to func
auto f = func2(); // calls func1 and returns int 1
---------
So you consider functions to be a reference type, since the value of a
function is not terribly useful. You want the declarations "void foo()
{}" and "invariant(void function()) foo = {};" to be equivalent.
This can work, provided you get properties. Otherwise you're back to
Javaland.