Metaprogramming in D : Some Real-world Examples
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Tue Nov 10 04:29:35 PST 2009
Jacob Carlborg wrote:
> On 11/10/09 01:27, Bill Baxter wrote:
>> On Mon, Nov 9, 2009 at 4:09 PM, Walter Bright
>> <newshound1 at digitalmars.com> wrote:
>>> Looks like Bill Baxter is giving a presentation on D Nov. 18!
>>>
>>> http://www.nwcpp.org/
>>
>> Yep, that's right, and I'd be quite grateful to you smart folks here
>> if you could share your meta-programming favorites with me! If
>> you've got a real-world example of meta-programming in D that you
>> think is particularly handy, then please send it my way
>>
>> I'm looking for small-but-useful things that are easy to explain, and
>> make something easier than it would be otherwise. Things like places
>> where static if can save your butt, or loop unrolling, and passing
>> code snippets to functions like in std.algorithm.
>>
>> Things like a compile-time raytracer or regexp parser (though quite
>> cool!) are not what I'm after. Too involved for a short talk.
>>
>> --bb
>
> This is invaluable to me, which makes it possible to do some form of
> duck typing at compile time:
>
> static if (is(typeof({
> /* does this compile */
> })))
There are forces at work (Don, that is) attempting to get rid of that
very construct and replace it with something better:
http://www.digitalmars.com/d/archives/digitalmars/D/Proposal_Replace_traits_and_is_typeof_XXX_with_a_magic_namespace_._99914.html
In my humble opinion, is(typeof({...})) is an ugly creature. I really
don't think it should be put under a spotlight as a good example of D
metaprogramming. If anything, please use __traits(compiles, {...}) instead.
-Lars
More information about the Digitalmars-d-announce
mailing list