O'Reilly logo

D Cookbook by Adam D. Ruppe

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Getting a list of all methods or fields in a module or an object

To dig into an aggregate, the first step is to get a list of members. Then, we'll be able to look at each individual member and dig as deeply as we need to.

How to do it…

Let's execute the following steps to get a list of all methods or fields in a module or object:

  1. Get a reference to the aggregate. For a struct, class, or enum type, you may use its name directly (or if it is passed to a template, the corresponding template parameter). To get a reference to a module, use mixin("yourmodule.name").
  2. Get a list of the names of all members with __traits(allMembers).
  3. Retrieve the member with __traits(getMember). Use a helper template in the form of alias helper(alias T) = T; and an alias member ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required