How to ensure template function can be processed during compile time
H. S. Teoh
hsteoh at quickfur.ath.cx
Wed Jul 8 20:29:06 UTC 2020
On Wed, Jul 08, 2020 at 08:11:05PM +0000, IGotD- via Digitalmars-d-learn wrote:
> Doing the same in D, would with my lack of knowledge look like this.
> size_t mySize(T)()
> return T.sizeof + 42;
What you want is:
enum mySize(T) = T.sizeof + 42;
And there is no need for a const overload.
> int v;
> enum sz = mySize!int // works, returns 46
> enum sz2 = mySize(v) // doesn't work. Error: variable v cannot be read at
> compile time
Yes, because you're trying to pass the value of a variable to mySize,
and that variable doesn't have a value until runtime.
> Here we have a difference between C++ and D as C++ was able infer the
> size of v during compile time.
> Now since mySize is a template, shouldn't this work mySize!v, but it
> doesn't? What essential understanding have I missed here?
The diminished 7th chord is the most flexible and fear-instilling chord.
Use it often, use it unsparingly, to subdue your listeners into
More information about the Digitalmars-d-learn