Metaprogramming in D : Some Real-world Examples
Jacob Carlborg
doob at me.com
Tue Nov 10 04:05:15 PST 2009
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 */
})))
Then I have some other things, not the most useful stuff but still usable:
Get the name of a function
Get the parameter names of a function
Get the field names of a class/struct
Get/set private fields of a class/struct outside the module
Call a function with named arguments
Then some templates that check if a type has a (class) method
More information about the Digitalmars-d-announce
mailing list