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

    <tr>
        <th>Summary</th>
        <td>
            [Clang][C++17] static inline members are not initialized if they are part of a template even when instanced.
        </td>
    </tr>

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

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

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

<pre>
    In the example below, the behavior of the `static inline`  foo member behaves in unexpected ways on Clang, GCC and ICX.
Compared to a non-templated type with `static inline` member, even if instantiated, the template based type does not initialize it's members even when side effects should be observed.

Since how unexpected and weird this behavior is I would guess it's not intended. 
This behavior is not present in MSVC, all static inline members are initialized as expected once the template type is resolved to a specific type.

```
#include <cstdio>

struct Foo
{
    Foo()
    {
        printf("Foo()\n");
 }
};

template<typename T>
struct Bar
{
    //! Uncomment to make MaybeInitializing work
    //!   Forces 'foo' to be initialized
    // Bar() { (void)foo; }

    //! Empty ctor does not help with foo to be initialized.
    // Bar() { }

    static inline Foo const foo{ };
};

struct NotInitializing : Bar<NotInitializing>
{
    // Does not initialize Bar<NotInitializing>::foo unless instanced and Bar() ctor with 'foo' is available.
};

struct MaybeInitializing : Bar<MaybeInitializing>
{
    static inline Bar<MaybeInitializing> does_work_with_ctor_in_bar;
};

struct Works
{
    //! Uncomment to see properly initialized member
    // static inline Foo foo;
};

int main()
{
    //! Instancing both types does not initialize the static inline members
    //!   comming from the template base type. Unless 'Bar' constructor is defined and accesses foo.
    // NotInitializing not_initializing;
    // MaybeInitializing maybe_initializing;

    //! Directly accessing 'foo' initializes it.
    // (void)NotInitializing::foo;
    // (void)MaybeInitializing::foo;
    return 0;
}
```

[GodBolt Version](https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEIJJcpAAOqAqETgwe3r7%2ByanpAiFhkSwxcQm2mPaOAkIETMQEWT5%2BAXaYDhl1DQRFEdGx8YkK9Y3NOW2jvaH9pYMJAJS2qF7EyOwc5gDMocjeWADUJltuyCP4qMfYJhoAgje3I8ReDgcAYqiXdyYA7FZ3B0B70%2BEAWDyBRz%2B4IhQKSxFCBCoEHMZg%2BqFBJgArG4GCiwVt/rcIb8ACIPUnHQkPAiYFhJAw045uAgATySjFYmAOABUrg8ni8CAcLA1yVCAUCAPSSsBgA5yBhoFhsQQHIgHFhMADWXIAskwWTEAJIMdJiPAAL1CwAOAHcSFroYDpbKgR81pgFAcwBx%2BKgfWrUAcYgdQmbaJbMOgnQdpcKGqDIRYDhAAG6oPDoBZ%2BymQsnfCXOmVy7B01kHBwkA7oVCeg4MVBChBVJJ2wgIA5%2BwPBrlhxzmi1RgB0MbjIuIid%2ByYpBaJQJGTEcyFDDAjYWBQbQDBGnc%2BU7zlLFZIJ5LuAte4UbJvDlutBxA8eITMvBGv/YjVqMfO%2B4rnRYOJK1l6DZCn2eADly47PleprvreX5bNgIAgF2Xirp6XqhAuipRgchjoI%2BiaVsQbYEB2Pp%2BgGeBekwqZMHQTBRPQI4/seVJngQzyvPqhqYG%2B4EfneD5QScPHGrBAnwcA373L%2BEILkuK5rpBoqiQa4k3p%2B0mIdWQEAPr2sQWoGe2enEXpoR6VEqlUj8bGno8nGCgcADqDoKGKhIQi6coKkqKpCuqShcnCqDssQtAsiumm4WwcxPoWsaSgcCl4MuoTKRuu6XCerGHrOCIavRDAYj%2BXlSsWBwmthyB3lEjYdqy7JejWdYgdFcGDmqzYpfUikZTMGq0mUHmJT5QL%2BXeVDEKgLDdVyNJ0gyXLWUoapspgQ7yuhChej644Blu55ECR1HVpgNBhAR%2BF4cg6y7XWfosX%2BSUHC%2B/EDneIEWRJn0IeV/5iXxv2CUYRW8T9mnWvl9xjZVJJ4MQHQEJFt33WkYMUZ8VEg5GmEEM93nJWmGZZu9uNachOa5S9cYk5mCxAx9oOgChe40xCSMEKsDAHBoMMzrcHBLLQnCYrwfgcFopCoJwbjWNYKUrB6RxmFsPCkAQmjC0sWogJiWxDj8GhcFsABskgABySBoGiSDbFv6Jwki8CwEi26QkvS7LHC8AoIAaJr2tLHAsAwIgKCzUkdCxOQlBKtH9BxKmyBJEkemplwACcenLSMekNCwjs0LQNLEP7EBRNrpBRKEDQspwGu18wxAsgA8lE2jI43vD%2BYwBBt6uDdS7wWBRF4wBuGItD%2B9wo%2B0oYwDiCPpD4EjnSpp61eYKoHReDSPfkIIVTVxGUTEPXHhYNXnF4G7c9LFQBjAAoABqeCYLabfspLGv8IIIgxDsCkDIQQigVDqBXroAIBgjAoAVpYfQeAoj%2B0gEsMKNRtycElOceBlhrBcB%2BLGNuZheCoE3sQeEWBUGgkqNUDILgGDuE8C0PQwQZglDKHoFIaRMHjD8IkHhBQGB9E4YMYYVRkZdCmPwvQ7ROi1CmKIgYcRhgyJYTkNRPRlHxQkEsBQyt1h6KdhwcWntq4%2BzwsQIukgNQKBTgcTOWchx5yFBAXAhAqzbC4AsXgWsR4LF1vESQQ57Y/CzpiMwPwthZyzlsGJZhMQmJdqQN2WwNBDi2JIKJCQ4mYitlsS2PwAhezIZwP2Acg4BNIKHCOCcY5kAoBAepScUCwOAHpJyDAtR8DoGXCuVcV7N3rofYZrcO5dwcIfPughB6RWrmPCeU9aAz0PlgTURhl7SzXlIzes9pY7z3gfOeR8aSixXmfC%2Brcr4bGlrfe%2BPBH7Pzfh/L%2BP9D7/2EKIcQIDPngLUNXXQiR2l4KsIgs%2BND0FJEwbPAAtOcY4JJTD4MsIQg4sK25bDIRQqhW80F0Kkc4CArhZGJHYcUFR3D8h8I0QIvIvCMg6K4RI%2BhiieikoJQohg3RGhMvEbYdR2Q6ULl5RwylPjlirCMRK85ZjSky04AcVQlszawothWdpKYulagWCmDxJ1Vbq18VUrQgTSDNiYFgOItDzkpLSVwI2%2BSNBbDMIky2GgLaYi4GbcxK8fYVMDv401NTw4QCQC02OTSI1xGAKbAIJd%2BmUEGdLMZw8m513GZ3buJyZkDyHgszA49J7T1nhrdZi8tmj0RrsreK9DnIH3hsDWCIT4XOQVclkNyb7wgecLPgzz36f2/owD5shAE/OkH8pQAKoEgC2PoReoLrBIJQfAKFMLODwoINGLYSKEEWDRRirFMscWZjxbQ%2BRmDGHMKFWwphfLVH0uERyoRmCH1yMkVynlTRaUftZdypRYrdFaLGL%2BkD0wKXAf0YY4BIsxYSwsYq5Vqr1XADugcU2Q4zB6vwAa7xxqg063NZgS1gwbXO1dnOn4Q4s7OtdZid1nrvXet9d7cpthKmEbNXrSQZssNZxVVsL1mJYmYhE0k85x75X%2BpNUR85pDWNlN9rJs1FC0jOEkEAA)


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMeFmXorr39qehb1inFzKIXvRFwiQgKjjiTS-GCJEhSEDET_8usKrrVFed9_ev5aIgyd77efYUSEApTkqEfjESZCT1R9A2Kal_qUEZY5STHyGJ-19myTYpYtEjKKocsSHKScfwyjgYojS4Y1Kz5DI-M1OONkGDIxaXOS4RM-VY9kIIW6AiRPVrPaIsLtm2RI8KRQ2K2S7oKUtKVsmDMhlUG4rCBmXMmsrpJ8OpDAcUUlRBjWK2IWzAlqT8p0FFlQeDeNNXiO1wk35r_mV50IruqGTxhcUlbYKywYPwO5F3bWwY0HeVMUGULUnD4hI3OMjxE7G4YXiZvimlL5VdikqW4hix6HJBUUNZmpI2j9kQsSSkqL6j-I3G67rFZYTYlHT_dsLAt0O4jtkmxfTDs5iyJtuN-pIWUfoO4QWsQWWM4p_sS_Hub8lhUVUjisphMetsD8rAOMhz9pOj_hAKavQvujEbUPYPQjKg_uSs0U2YsjWiJL-_R4dWKMIXHI3Tn4gzU-7t93rkBVxGeRsjlhGUiDYxJoyg_VuCNnUbNaxOyNuoDF83LMuOo_yM4ecfQ5_mh7-qxmVzGZfxH-slpWR4frgT3tczsvpuQv0z-rq-82UEZaBUBgVid3-AvkGEQf0NRIbXx9-E3ZcRKYohEA1hiyBDrBP0ITLfnY3LhO1InX0nO1CtI0RZhpcvAwl5UBJ-CtXfciOgke3gFJbhZ3eCY4afDwoE-C--3xjUiqrp2agh9UcVpCivXmU2FPQX-z__F4Cv9j6noE4IG5GSNoP-d4k_gfgSlDe3r0jzyYWMAEbDgvLXzEdifY0Pq35T6v-pRQCMAAYftGU-FuTYT6K3Gv5gPbrv1Zf-hA1TNrgHOA_C_E9p_Be1r_nxQe7L3Pf0Pnv4v0XHKP8e0u_3APj3AP03Ln-Hg8T_CsGR1Bn9v-c-RYitalKhOu8_9Zq3Tv13bL5mySuD_wsVLhu2CHD579bwH7jMV-QG14akSceGRb_t-0Pb-7Zjfl-uA91B66Umxdf95dUY2f0rfRheHnNGfmX_4NJX847RBZdvWRVEEaIU0YH710r7uwhK0vzGnyL8NeW_ZlcxjHwv9x1LFdcoavL-DduYnx95_sd1w4b1FfFHO_pSYG_V9R3mD6lvkvg7uRo1bV2y3Kd0-XYrel0laJAYkrxhD6immJSMpDL8LG2aig4WRhgJiUOSNz9JnYwDwpMRwNpfJinQ4S2WXOUB_G7jQ0cpoBfDJdAnrhKBYKMpwHl2sHGADNxObxwX9sBL5nbj-hroKQ459wSUxwxCYBNY7gDYg0XVAecOdH-3baxkopqgAooP3NZvs3x-BrtOta8xMPR9A2yRGqYz3bZAtUTVSkB0FYFXXTXTsqIKgPUN3LRd0iGhlhle4mEflBXAepptu0fkFnyxCdYgM7Wd42rHnTSuAafAV9N8orqersXGY-Zn9twXVusjf70Hi3nlOxawtvxNl7V-3UVSojokuqIjUPdW3rS9shFvzsW3UgKSKxLMmYfUJAL-DZ_i3geyfhYgB2VutKaBo9pD7zk-iGbq2tuHrkCFaAvnnIyjNx1aCagN0VBwd2gYXq8jM5wBxdzsy4WbbQD29dQCHSdKLUjArt9edb8AawD3dTIr8UwB0RJM-oMC9grYbLcUJkDqYUr0lLruwkwWeuoA9XgyAc26404DlunEFt4AsJwoHViDRbTVa-KrVWgn3mxSJTqIOvgY8dnJ5VjvQeQnsVuEgRU666R04yqyjZtqer6aAmBMyUYl8PyKQuHS8qKc1sWhlyE3yRawy4BMDgpKROcAlRQeLIvvEhO8QtJtYJ2nj2eBJ14COSe8mq05FMagzK9gYLmWsdOiXldVcPWP0A1dFRplNK7Yy898qZ9NS1q2oEHiPrTuat428AFmyNw5d2jcGV73r4ebc1m_AlGXnr-27Ek-Vc9KySOg5r0ob3JU1fcanaRwlZgg0fkTrqvp6ZaCFldeEqVXYo4KcHCgbuhrkN9U40BiIIiy7nZ2Fu4OehvXFBlep-hglYn77O-bW3rzjZdx7VIiVXK30WZh1BCUXQQEWVi-8sVcZq0t1RUkN-wGYia89HOFGR9dDWxqnrpHYiAeldqpIt70oN3y_XUWGiWZlYaSREC9qcQ27NR08TQidnazK6W9bdOoVG4qpW4DKG6LQjx20WNDjjTYJpGSi05LdrbXttOTgmpjUa8VM7h7KvCvI4JTvqVH2BVN2kMh165-fOtlC12PsZ_EemSoxe3pV5c9zs47x7hxxX5RWDvJffE6oYOq2clSjQ_9yuKS_rQ87klQ0Spx5b5NlRRdp6II81aSNMWbLA5VsoIp8EZpXYySaS-fjhdCT-PIdr9QxhuG1zW1RKZ29KySM9GB4XUJnx53Xtn73nG2mxfl8Z7PH9fzwbJEx124mqU3gnDMfGd_nh20RDIKTXPmQmkdC-N8buftKojSdSBt55GfSYXyAI85WSdKikTuoWwdzaYqWEDiOM86WsDl0i0Vv-4uSaSTSiFWF16PK9_e13DqPQqdbpQMuMVV4eiRJBY-PtTrzEgjnQJIswTAfguJgbdqqN-nVpfhmdJpmJ-62X0rLxfKDBATBFbNN8sFoKAzE1t57rNYeazdHNrNYg4fdtFDS8uGfbkDSoTK5dZB2UrprpRbuqultpE16K3qCnq2prq06ox2MusegCZglmv81RSFuzp61O8gbKatGm_l7gg9Xexga5jNa3LekVc-Er9TsbKpVFG7ltuqmk6Qb5OFh9Tt5pKZ5mF3eBj7nbY5LVJ_dSp10ZCj-VJ34RUAAuANKf4yCC-0Whr3mWmayUOlSqaarouTg3qDp5oAEyZXQMCh8i8uAuSViFyiUcdeeU0fafk6QjBPaxjBcW5prNpzihSiCdRF2hHujSS7rfaquUwMtdVmCrdxO_ec5Kq9ILoZeM7iqs7MbJFC14BzTfQd3z942TlWik13d2VvjSdKYZuJH3lp0lv-Llt5Gy9fPNxMo9Dtm0k6teO0i45lcxNHFM-OumabJSvXhrsk2q2PUfqQeh2CE0jB7RkqIqCn5Eg9calP7trWdSXZZ3hdeVbY6TZdk577Z04N65w6bmHFN3fFH7sVVDFvmbaluGLh4yanW37TgRQ9zXO34UGUiHBl2gtlrUS-lAECAaq20V7p1mBRWb0KGm-mEuOktIfoIK-Emlz8cx2tpbiLzMumTVI49Y51sVHQfh6AJ7fJk93eS3N5-zzl5hPReeXLTyG5rJE3C7b4cSourzKso1oMjby-oPFxAxfy5nlJGV5_1f9mrsoMr_OabUauqW7KZLlfnU4u9vhctKmZ0HHZSuV0S-vCDQDNOvJFy9qpokNNNxGpzUuhanruLT3OOJ2zs0hUQJ2eDWvhR3vdE9RZOjM517ybd8VJprbovZp1ijHCGbFckiaCZ6TOXQv92OPd6X6ZS17X55trjmvF8eyZdL5us54TQXRwc_oMOtKkx7iy_TYPkqNSqA9rcghvk9lhX7vJbquusK8na7NRn1m13B46k3_1pxUMVcfMet5IloGPRSOMHvbs4h8c9S5yk9WuE13FVTh-vduak4cB7BCY1mvPK_aaES-dczcrpIlgnIWwtfpzpvaLhD6BOLfk3aRM6_iMZ01x5bya1sieq6W5EFKqHhVzJ57W7iHKs1Ufyl2CouUmeT6F6YVneJ10qkRToDG8vs4Ws8oFNtEShd8QD5FlDU3LvQBbd5ZrtSPmylj6W1vTjqrn4Vp3aHQ8Xx-hOwL1CtVYOLZ-7Kr0sjwsuFbzeuIVymLSO9mhL_OdF-wvzTnuK8-vYz1YGq98yFSus0_gwvm-CE368Lcd9W_S4VZPTkBtk2jPu-ITTu8dCOTH45ZwU2F1TraTpAtP60lcrkvRFam8buIzjidlfT-hZh7LUdWkdqGFq1O9dc-Urs6Pw4EuJ4XlF36qcdlMesjSaw-pVntvJlXqcZWv5rVFJ7rCXddapgHw8ak1Xn_Ev4R4LsyDH-jXROamM0GYTbkf6S8JidJFEOdTkZdjeYq4i3S5zKMJJ6C5JMrxD_yL53iR4zme44QJx_1EwWUSzuVAulyQHAYzRuRQEeD8Z57fi-El_AemtEW_ZpwwlX7kQYhyOh5o8nz0OlDkGUn9Uf8a1v8TtgllRC7HtKEfGhrc5OMp6OsIUlKHW2bYK-FEZiT1_3Na9vlDMWbxeBLaj3NVUDcsubDBx_ffx4nhn2ODnz_aOv_11zcGbtI2_BmRguH1Aebbv3-qmlxRNLzzjqwpw-sj8f8XAAD__w9w7Ag">