If Statement with Declaration

Nemanja Boric via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 19 07:27:36 PDT 2017


On Wednesday, 19 July 2017 at 13:30:56 UTC, sontung wrote:
> So I was thinking of a way of extending if statements that have 
> declarations. The following being as example of the current use 
> of if statements with declarations:
>
>     if(int* weDontPollute = someFunc())
>     {
>          // use weDontPollute
>     }
>
> That's great and all, but it only works by checking if the 
> variable evaluates to true or false. Which is fine for a 
> pointer but otherwise useless for anything else, like integers 
> where zero is usually valid input (index for array). So 
> currently the only way to do something like this in the 
> language, that i've found, is to use a for statement.
>
>     for(int i = someFunc(); i >= 0;)
>     {
>         // use i
>
>         break;
>     }
>
> Not that ideal to use a for statement. It makes it hard to read 
> and if the break condition isn't there it might very well be an 
> infinite loop. So I was thinking of some sort of syntax like 
> this:
>
>     if(int i = someFunc(); i >= 0)
>     {
>         // use i
>     }
> Thoughts on this sort of feature?

This is included in C++17: 
http://en.cppreference.com/w/cpp/language/if

```
int demo() {
    if (auto it = m.find(10); it != m.end()) { return it->size(); }
    if (char buf[10]; std::fgets(buf, 10, stdin)) { m[0] += buf; }
...
```


More information about the Digitalmars-d mailing list