C++17 cannot beat D surely

Stanislav Blinov via Digitalmars-d digitalmars-d at puremagic.com
Sat Jun 3 13:29:04 PDT 2017


On Saturday, 3 June 2017 at 20:18:59 UTC, Basile B. wrote:
> On Saturday, 3 June 2017 at 18:45:56 UTC, Jacob Carlborg wrote:
>> On 2017-06-03 20:31, Russel Winder via Digitalmars-d wrote:
>>
>>> But is this sort guaranteed to happen at compile time rather 
>>> than
>>> runtime?
>>
>> Yes. It's the context that decides if it occurs at compile 
>> time or at runtime.
>>
>> Something declared as "static" or "enum" requires that the 
>> value can be evaluated at compile time.
>
> Meeep. Wrong. The example is just wrong. 'static auto b = ...' 
> is not a compile-time variable. It's just a variable that's 
> like a global but declared within a function.
> Remember the singleton pattern using 'static Stuff instance'.

Meep. Wrong :)

Static initializers for static variables and constants are 
evaluated at compile time, initializing them with runtime values 
is a compile-time error.
Yes, you can't do a static assert on b. It's still initialized at 
compile time though.


More information about the Digitalmars-d mailing list