compile time counters

monkyyy crazymonkyyy at gmail.com
Thu Nov 30 20:22:10 UTC 2023


Whats the current state of the art of compile time counters

my old code:
```d
//dmd -mixin=mix -run count.d

import std;
template counter(){
	template access(int i){
		//pragma(msg,j,"acess");
		enum access=mixin("__LINE__");
	}
	template get_(int i,int sentinel){
		//pragma(msg,i," ",sentinel);
		static if(access!(i)>sentinel){
			enum get_=i;
		} else {
			enum get_=get_!(i+1,sentinel);
	}}
	template get(int i=__LINE__){
		enum setty=mixin("__LINE__");
		alias get=get_!(0,setty);
	}
}
void main(){
	counter!().get!().writeln;
	counter!().get!().writeln;
	counter!().get!().writeln;
}
```
I'm picking dependencies for a build environment where I want to 
be productive for at least a few years and picking which compiler 
bug to depend on probably deserves some consideration

Are there other options and what pros and cons do you see with 
other compiler bugs?


More information about the Digitalmars-d mailing list