I'd like to be able to declare a function with a special @mixin property that will auto-mixin at call site:

@mixin string foo(){return some_string;}
void main(){
 foo; //behaves as mixin(foo()); if @mixin weren't provided
}

This is purely syntax sugar, as it could be done with a mixin at call site, but is very useful in a number of scenarios:

Example 1:
I wrote a string parsing function 'embed' that allows to embed variables in current scope in a string:
void main(){
int x1=11;
double x2=2.3;
assert(mixin("variables: x1=$x1, x2=$x2, sum=$(x1+x2)".embed) == "variables: x1=11, x2=2.3, sum=13.3");
}
The 'embed' function parses the input string, extracts the '$' tokens (with a proper escape mechanism) and return a string of the form 'std.conv.text( ...)' with appropriate arguments so that the string can be mixed in at call site as above.

Without the @mixin property we have:
mixin("variables: x1=$x1, x2=$x2, sum=$(x1+x2)".embed)

With the proposed @mixin property this would simplify to:
"variables: x1=$x1, x2=$x2, sum=$(x1+x2)".embed

Which is simpler and easier to read than:

text("variables: x1=",x1,", x2=",x2,", sum=",x1+x2);


There are many other use cases. 

If for some reason we can't have @mixin special property, can we at least have UFCS for mixin, so that we could write:
"variables: x1=$x1, x2=$x2, sum=$(x1+x2)".embed.mixin