can we get error messages from __traits(compiles)?

Adam D. Ruppe destructionator at gmail.com
Fri Mar 7 11:06:54 PST 2014


static assert(isInputRange!T) tells us when T doesn't match the 
range interface, but doesn't tell us why.

Trying to instantiate a function that uses the range will tell us 
why it didn't compile, but puts the error in the using function 
instead of at the object.


My thought is we could improve things with something like this:

auto error = __traits(compileErrorMessage, useRange!T);
static assert(error is null, error);


Then, the static assert will fail at the location of the object 
instead of in library code, but the message will show what went 
wrong with instantiating the library.



Any other ideas to achieve this? If no, can we capture the error 
message like this?


More information about the Digitalmars-d mailing list