On Wed, 20 Aug 2014 20:01:03 +0000, Colin wrote: > It looks very....hacky. > > I see 3 distinct parts playing a role in my confusion: > A) The 'is' keyword. What does it do when you have is(expression); > B) typeof( expression ); whats this doing? Particularly when the > expression its acting on is a closure that returns nothing? (at least as > far as I can see) > C) The closure expression: > (inout int = 0) { > // Check to see if I can do InputRangy stuff... > } > Why is there a need for that inout int = 0 clause at the start of it? > > Sorry for the long question! > > Thanks, > Colin
Before the introduction of __traits(compiles, ...), `is(typeof(...))` was used. It works because the is expression evaluates to false if the contents don't have a type or are semantically invalid. So this code creates a delegate to test the various properties--if it would compile, the delegate has a type and `is` returns true. The inout int parameter is very hacky, see this thread: http://forum.dlang.org/thread/opykgvxbqqeleuikt...@forum.dlang.org#post-mailman.102.1396007039.25518.digitalmars-d-learn:40puremagic.com