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

    <tr>
        <th>Summary</th>
        <td>
            [clang] error: expected '(' or '{' cl dialect
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    ```cpp
template<class T>
class Tuple
{
public:
        Tuple(const T* pTup) : m_tup[0](pTup[0]), m_tup[1](pTup[1]), m_tup[2](pTup[2]) {}

protected:
        T m_tup[3];
};
```
I use clang.exe to compile the above code it will tell me ```error: expected '(' or '{'```
But it will have no error in cl.exe.
Should we need to support this? 
I am not very familiar with clang parser.
My thought about this is I can change some logic in clang parser and add one AST Node like ```MSArrayInitListExpr``` to fix this error. 
At the same time, I found the following code,
```cpp
template<class T>
class Tuple
{
public:
    Tuple(const T* pTup) : m_tup{pTup[0], pTup[1], pTup[2]} {}

protected:
    T m_tup[3];
};
```
Its ast is
```bash
`-ClassTemplateDecl 0x20423924f00 <test.cpp:1:1, line:9:1> line:2:7 Tuple
  |-TemplateTypeParmDecl 0x20423924da0 <line:1:10, col:16> col:16 referenced class depth 0 index 0 T
  `-CXXRecordDecl 0x20423924e70 <line:2:1, line:9:1> line:2:7 class Tuple definition
    |-DefinitionData standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
    | |-DefaultConstructor
    | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
    | |-MoveConstructor exists simple trivial needs_implicit
    | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
    | |-MoveAssignment exists simple trivial needs_implicit
    | `-Destructor simple irrelevant trivial needs_implicit
 |-CXXRecordDecl 0x20423925198 <col:1, col:7> col:7 implicit referenced class Tuple
    |-AccessSpecDecl 0x20423925228 <line:4:1, col:7> col:1 public
    |-CXXConstructorDecl 0x20423925430 <line:5:5, col:24> col:5 Tuple<T> 'void (const T *)' implicit-inline
    | |-ParmVarDecl 0x204239252d0 <col:11, col:20> col:20 pTup 'const T *'
    | `-<<<NULL>>>
 |-AccessSpecDecl 0x204239254e8 <line:7:1, col:10> col:1 protected
 `-FieldDecl 0x20423925600 <line:8:5, col:14> col:7 m_tup 'T[3]'
```
Maybe I can simplify this problem by giving ```<<<NULL>>>```.
I would be very grateful if someone knowledgeable in this area could offer me some advice.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vl1v6yoW_TXkZasRwXEcP-TBTU6lak6PRtPMqG8Rhu2YOdhYgNPm_vorcD6cnA_16upKTmsMrLXXZsGGO6f2LeKKpI8k3Ux472tjV80fx3-pSWnkcUUWdHhE1xFaeGw6zT2SZC00dw62JPlCaHFq9J1GQguSPRJadH2plSBJEb7QfOhkS2Fa52FLWAHdtu8Iy4EkBTQ733ckfaQk3RC2jF3nVk7Y-jJgdjNg9uMAdjNgaOUQYso2MZSis8aj8CivwV1mJ2F88hhVnF_OOSC0eIbeIQjN2_0UPxC8AWGaTmkEXyPw0hwQhJEIysO70ho8ag0NwgUFrTU2SMaPLkYBhGWELQnLwNjYyB7D3xHtY-8vgDU_ILQGIg6oFoQOoUwJLV5r02sJ7wgtogzBub7rjPXga-VI8gRRAm-gNR4OaI9Q8UZpxS28K18PwqDj1qENgC9H8LXp97UP0voBB5SDZxC8BVHzdo_gTIOgzV6JIZwrBvBWApcSTItQvG7hW0iNVt9H-Xh5Lazlx-dW-a_K-S8fnb30BQmV-hhoo-BpkFD4mG3HGwSvGgzL_wyV6VsZOyqjtXlX7T4uBWHr8Sr-PScDAHzKytnjjYfXcOPYSzP6M9v8zp-R8tMG9Q6486DcuKPkrh7aD-sgcHtSv0GhgX4wOmdJzuYVpUCStUfnpyFNSTGLP7YGrVokSZEP376c24wkRXZJFwDJ1g9n8O2xw39z29yRSB5JTgCRgAYGYXR4XwT08ztYrNBiK1DCsDISO18DBdVK_AAK24E2CHt7-w8KY-UdH2ZjPvYpQSMXgMRKtcor057WImjcXD5uuOfgPG8lt3Kn-TFuE6sOimt93AnTHXmpEWrudr1Du5MoNLcod8IbG7bRLvpoJ7Hivfa7gHtlOrOFrnUYZ_sw727A2nTHUS841YTQT2FE7oGk4zbsfkTpdmGMEsrD-WV3N-6O5MUccEyCH8p5d891i_2TOItYdBps_T8X5ojjr0a5oA8bvE-kshY1Hnjrf4MQBf7chOksXwYTnnx9tXt2dXt2Efij668bbLBfIQQ699qhuONhbDky-_yXZDM4HWpXzPXb22h173DnyXgTpfF3wWXzK3B6ijVZhwM1VLODUaHEnU9LIKyIFfuq90G1Efh2HcPR8T9-HwiTdJTIkThGr0EwGo_XwH7Dmt0tNEnWw_Ptv1-_hvN_eE5r-cskz3Gc5Ow2yTN6k-XLUR5AF_ThSaG-N8eCjpO7vE3ubD62SKwCQdf2XAqiqHEFeOHHEk8FOtpXVcehgHbWlBobKI-wV4dQHq_zfp6Jc_c03hve4-2ixOHmsLfcY9VrUFW8AYQS_7017xrlHuORp9qBl1vkIOJkU1Vow3Uo3hm4PCiB04lcJTJPcj7B1SxL5iljeZpN6lVZJXKRJlwwsViwbMH5skSRLmm-WHBaphO1YpTNZ2y2nM3SNM2muMgSXFRVmtB5PsvnZE6x4UpPtT40U2P3E-Vcj6sZo3OaTzQvUbt4_WUsXlwICxV5YldhwkPZ7x2ZUx2OkCuEV17HO_MwI93AZ-90IDRIxTUKP-mtXtXedy5UefZE2NNe-bovp8I0hD0FttO_h86a_6PwhD3F6B1hTycBhxX7MwAA__9gA5VL">