## digitalmars.D.learn - Can I count the of enum's fields at compile time?

• Marc (3/3) Nov 22 2017 for example:
• Michael V. Franklin (6/9) Nov 22 2017 https://dlang.org/spec/traits.html#allMembers
• Marc (3/14) Nov 22 2017 This was fast! Thanks
• Jonathan M Davis (4/7) Nov 22 2017 import std.traits;
• Marc (5/15) Nov 22 2017 This sounds more readable. I was going to write a "function
Marc <jckj33 gmail.com> writes:
```for example:

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = coutOfFields(A); // 5 fields
```
Nov 22 2017
Michael V. Franklin <slavo5150 yahoo.com> writes:
```On Thursday, 23 November 2017 at 00:58:21 UTC, Marc wrote:
for example:

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = coutOfFields(A); // 5 fields

https://dlang.org/spec/traits.html#allMembers

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = __traits(allMembers, A).length; // 5 fields

static assert(countOfA == 5);

Mike
```
Nov 22 2017
Marc <jckj33 gmail.com> writes:
```On Thursday, 23 November 2017 at 01:01:42 UTC, Michael V.
Franklin wrote:
On Thursday, 23 November 2017 at 00:58:21 UTC, Marc wrote:
for example:

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = coutOfFields(A); // 5 fields

https://dlang.org/spec/traits.html#allMembers

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = __traits(allMembers, A).length; // 5 fields

static assert(countOfA == 5);

Mike

This was fast! Thanks
```
Nov 22 2017
Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
```On Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote:
for example:

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = coutOfFields(A); // 5 fields

import std.traits;

enum countOfA = EnumMembers!A.length;

- Jonathna M Davis
```
Nov 22 2017
Marc <jckj33 gmail.com> writes:
```On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis
wrote:
On Thursday, November 23, 2017 00:58:21 Marc via
Digitalmars-d-learn wrote:
for example:

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = coutOfFields(A); // 5 fields

import std.traits;

enum countOfA = EnumMembers!A.length;

- Jonathna M Davis

This sounds more readable. I was going to write a "function
extension" to enum but I think it isn't really needed. Thank you
too.
```
Nov 22 2017
=?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
```On 11/22/2017 05:21 PM, Marc wrote:
On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis wrote:
On Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn
wrote:
for example:

enum A { a = -10, b = -11, c = -12, d = -13, e = -34}

enum int countOfA = coutOfFields(A); // 5 fields

import std.traits;

enum countOfA = EnumMembers!A.length;

- Jonathna M Davis

This sounds more readable. I was going to write a "function extension"
to enum but I think it isn't really needed. Thank you too.

As an eponymous template:

enum One { a }
enum Three { a, b, c }

import std.range : EnumMembers;
enum countOf(E) = EnumMembers!E.length;

unittest {
static assert(countOf!One == 1);
static assert(countOf!Three == 3);
}

void main() {
}

Ali
```
Nov 22 2017
Marc <jckj33 gmail.com> writes:
```On Thursday, 23 November 2017 at 01:34:54 UTC, Ali Ã‡ehreli wrote:
On 11/22/2017 05:21 PM, Marc wrote:
On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M
Davis wrote:
On Thursday, November 23, 2017 00:58:21 Marc via
Digitalmars-d-learn wrote:
[...]

import std.traits;

enum countOfA = EnumMembers!A.length;

- Jonathna M Davis

This sounds more readable. I was going to write a "function
extension" to enum but I think it isn't really needed. Thank
you too.

As an eponymous template:

enum One { a }
enum Three { a, b, c }

import std.range : EnumMembers;
enum countOf(E) = EnumMembers!E.length;

unittest {
static assert(countOf!One == 1);
static assert(countOf!Three == 3);
}

void main() {
}

Ali

whoa, this is so easy and elegant. I'm falling in love with D.
Thank you too!
```
Nov 22 2017