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.
