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? https://wiki.dlang.org/User:Quickfur/Compile-time_vs._compile-time T -- The diminished 7th chord is the most flexible and fear-instilling chord. Use it often, use it unsparingly, to subdue your listeners into submission!