On Monday, 27 June 2016 at 06:52:58 UTC, Ola Fosheim Grøstad wrote:
On Monday, 27 June 2016 at 03:09:46 UTC, Meta wrote:
On Sunday, 26 June 2016 at 22:32:55 UTC, Walter Bright wrote:
On 6/26/2016 10:18 AM, Enamex wrote:
- template arguments that accept constant values of any type whatsoever
'template<auto Arg>';

Still adding D features, I see!

Imitation is the sincerest form of flattery, so when is destructuring coming to D?

Also, the `if (init; condition) and switch (init; condition)` seems like a very nice idea.

It's from Go, I don't see much value in it. You can just wrap the if in a block:

{
  init;
  if(condition)…
}

That is usually more readable IMO.

No, it's the logical conclusion from the for(init; condition; increment) loop and the declare a variable anywhere feature, introduced in C++ long time ago.

It's funny that C++ now will introduce it, as I had the same idea a couple of weeks ago for C. I'm currently in the process of transforming old legacy C code that had all their variables declared at the top, to a more modern style, using C99 feature taken from C++, i.e. vars only declared and initialized when they are used and using for(initdeclaration;...) style. It appeared quite rapidly that in a lot of cases the if(init; and switch(init; would have been nice as it would have brought a lot of regularity in the code and it allows to limit the scope of a temporary variable really to the section it is used in without overloading the code with { and }.

btw: I was first quite skeptical of the gain to be had of that scope reduction transformation, but after discovering several serious bugs in our code because of scope errors, I am now transforming more systematically to that style our 200K lines of C code.

Reply via email to