On Sun, May 3, 2009 at 5:07 PM, Andrei Alexandrescu
<[email protected]> wrote:

>> I did find a sort of bug when trying a slightly different
>> implementation of this though - any kind of explicit instantiation of
>> the Throw template causes the __FILE__ and __LINE__ to be evaluated in
>> the scope of the template rather than at the call site.
>
> That's intentional and is used in enforce() and a couple other places in
> Phobos.

That's what I figured.  It wasn't until I looked at the source to
std.contracts that I found out about it, though, and I doubt many
other people know about it.  The only mention about it in the
changelog is for 2.013, where it says "Changed __FILE__ and __LINE__
so they work as parameter default initializers" but that doesn't..
well, doesn't say a lot :P

In any case, I doubt the bug is intentional.

Reply via email to