Homework help, guys!

monarch_dodra monarchdodra at gmail.com
Fri Aug 2 03:58:02 PDT 2013


On Thursday, 1 August 2013 at 23:57:47 UTC, John Colvin wrote:
> On Thursday, 1 August 2013 at 23:48:33 UTC, Timon Gehr wrote:
>> On 08/02/2013 01:34 AM, hunt wrote:
>>> Hello, guys. It is weird to ask about my homework here, but I 
>>> haven't
>>> gotten a proper answer yet. It's about D feature...maybe..
>>>
>>> http://dpaste.dzfl.pl/905d6ad7
>>>
>>> Question is that "Investigate how D allows you to defend your 
>>> definition
>>> of Map so that it may be used only with a type of key that is
>>> comparable, and place this defense in your solution."
>>>
>>> Please leave your comments here. Thank you so much.
>>>
>>>
>>>
>>
>> This should get you started:
>>
>> http://dlang.org/concepts.html
>> http://dlang.org/traits.html#compiles
>
> Also, say hello to the most esoteric expression I can think of: 
> D's "is" expression
>
> http://dlang.org/expression.html#IsExpression

http://dpaste.dzfl.pl/f3d7c828

//Via constraits
//This will do a template mismatch
struct Map1(T)
if (is(typeof(T.init < T.init)))
{
     //Who cares	
}

//Via (explicit) compilation errors
struct Map2(T)
{
     static assert (is(typeof(T.init < T.init)), "Error, " ~ T ~ " 
is not comparable.");
}

void main()
{
     struct S {} //Not comparable
     assert( is(Map1!int));
     assert(!is(Map1!S));
     assert( is(Map2!int));
     assert(!is(Map2!S));
}


More information about the Digitalmars-d-learn mailing list