new discovery: import only if available

Nick Sabalausky SeeWebsiteToContactMe at semitwist.com
Wed Jun 19 13:46:52 PDT 2013


On Wed, 19 Jun 2013 04:37:10 +0200
"Adam D. Ruppe" <destructionator at gmail.com> wrote:
> 
> template moduleIsAvailable(string name) {
> 	enum moduleIsAvailable =
> 		mixin("__traits(compiles, { import " ~ name ~ "; } )")
> 		? true : false;
> }
> 
>          pragma(msg, moduleIsAvailable!"test");
>          pragma(msg, moduleIsAvailable!"not.existing");
> 

I do that "__traits(compiles, {import blah;})" trick too,
although I've never generalized it. Nice util.

I find the trick useful for generating a clean error message if
something is missing, like a configuration file written in D, or a
-version that introduces a dependency on a certain external module but
doesn't find it.



More information about the Digitalmars-d mailing list