<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/88396>88396</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            elvis operator (?:) type conversion
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          bsbernd
      </td>
    </tr>
</table>

<pre>
    I know that the `?:` is not standard, but llvm/clang supports it, afaik. But somehow it seems to convert the type

```
bschubert2@imesrv6 test>cat elvis.cpp
enum my_status_t {
    MY_SUCCESS = 0,
    MY_FAIL1 = 1,
    MY_FAIL2 = 2,
 
};

my_status_t func1()
{
    return MY_SUCCESS;
}


my_status_t func2()
{
    return MY_FAIL1;
}

int main(int argc, char **argv) 

 (void)argc;
    (void)argv;

    my_status_t status = func2() ?: func1();

    return (status == MY_SUCCESS) ? 0 : -1;
}
```

```
bschubert2@imesrv6 test>g++ -g -W -Wall -Werror -o elvis elvis.cpp
bschubert2@imesrv6 test>echo $?
0
```

```
bschubert2@imesrv6 test>clang++ -g -W -Wall -Werror -o elvis elvis.cpp
elvis.cpp:24:17: error: cannot initialize a variable of type 'my_status_t' with an rvalue of type 'int'
 my_status_t status = func2() ?: func1();
                ^ ~~~~~~~~~~~~~~~~~~
1 error generated.
```

Why is it converting from my_status_t to int?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zYQ_TXjy8AGRcn6OOhgxzGwQHsKiqCnYCTRErsyaZAjBemhv72g5NRyNl30YwXDoPCGj_MeRzPkvW6NUiVs97A9rGjgzrqy8pVypllVtnkrv-BXY1-RO2LkTiGkAuIjxDtIBWqPxjJ6JtOQa0A-YDUw9v14BnmsezIt-uFysY49ag44nUh_3eB-YPT2rDr7iprRK3X2yBZra0bl5qP47aJAHEDsrv-puP6m18rX3VApxxISoc_KuzFFVp4hfqyJUfWj9pv6cpnDlRnOeH578Uw8-BdGyPYzgoj4868vT788PDw-PSHEBxQgH-7A4-7LT9EERZ9BcoLkDbpmnB0g3i81LBM4DaaOQOYgi_fwRUZO8eDMIrEbU3a4s-VTYvkPiCdRf0erDeOZtAGZhyW5tg73V3fkEOQO5I5cO4Is_tK6x3fxMh-tbkAW0654cfgdNH4wJwQsdcyLydqFJJzr786-b3muKkHmN5ZAtPBzpkKBgW39mRH3Bfevq7AFuQe5x3WL62dcP1Pf4_pZOWcdru1coB_L9Ht8qu4sgkyCAVOw-DF5Th_qf8j19hrvQla7KAtWTpvCoiYT2oM2mjX1-neFhCM5TVWv0J6mDxxBZos7B5nhq-YOyaAbqR_uArUJAddL_n-Vgh8e2D7iH988c2w0S8JWGeWIVbP5ju_P3Vvoi5rfe5k2LZ6cvW8-bDGIiY-rpoybIi5opcooi2Se5KLIV11JlGTFloq0rmWUFyLdprEQpKIqU3RKxEqXUshEJFEUbUUexZs6r090ivNCNOkpJgGJUGfS_Sb044117Up7P6gyz-MiXfVUqd5PrV9Ko15xAkHKMAlcGfasq6H1kIhee_Y3Ftbcq3KuCHsJjtjQEvLrXJDFfF-zfK-tWQ2uLzvmi5_wI8hjq7kbqk1tw6C4zovpyIuzv6maQR6nfDzI45TvnwEAAP__ZRzx8g">