01-Sep-2014 00:36, monarch_dodra пишет:
On Sunday, 31 August 2014 at 13:47:42 UTC, Dmitry Olshansky wrote:
What do you guys think?

I'd say add "trusted" to those function names:
"trustedCall"
"trustedAddrOf"


Would we ever use our module system? I agree though that being easily grep-able is useful for these functions.

assumeSafe?

Because:
- "call" could mean a lot of things. It's not imidiatly obvious that it
is meant for being trusted.
- "addrOf" is *also* used as an alternative for "&", especially in
generic code, when you need the address of an attribute, as that
attribute could actually be a property function. EG:
auto p = addrOf(r.front);
Nothing here implies trust.

Local import of 'trusted' right there might imply trust. Selective, preferably static.


Also, implementation wise, wouldn't it be possible to instead make
`call` a template aliases itself away to `fun`, but with different
attributes? The `auto fun(Args)(auto ref Args args)` tube approach has
the disadvantages that it:
- prevents return by ref

auto ref return FTW

- fails perfect forwarding of lvalues into rvalues.

?

void inc(ref int a)
{
    a += 1;
}
    int b;
    call!inc(b);
    assert(b == 1);

Works fine.

--
Dmitry Olshansky

Reply via email to