C#4 Covariance/Contravariance

Daniel Keep daniel.keep.lists at gmail.com
Tue Jun 9 23:26:47 PDT 2009



Lionello Lunesu wrote:
> 
> "Robert Fraser" <fraserofthenight at gmail.com> wrote in message
> news:h0mui6$2rlh$1 at digitalmars.com...
>> Lionello Lunesu wrote:
>>>
>>> "bearophile" <bearophileHUGS at lycos.com> wrote in message
>>> news:h0ggl7$60f$1 at digitalmars.com...
>>>> From the last C#:
>>>> http://codepad.org/kQgbwAqJ
>>>>
>>>> Bye,
>>>> bearophile
>>>
>>> Lionello likes this
>>
>> In D if you want to treat a Template!(SomeClass) as a
>> Template!(Object), it's as easy as "cast(Template!(Object))
>> cast(void*) x"
> 
> Does not work for interfaces though.
> 
> L.

Hell, it's not even safe.

class Template(T)
{
    static T instance;
    final T getInstance() { return instance; }
}

Or

class Template(T)
{
    static if( is( T == SomeClass ) )
    {
        bool boom() { return true; }
    }
    void stuff();
}

(cast(Template!(Object)) cast(void*) new Template!(SomeClass)).stuff();



More information about the Digitalmars-d mailing list