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

    <tr>
        <th>Summary</th>
        <td>
            `clang-cl /EHa` with MSVC `std::variant` emits linker error LNK2019: unresolved external symbol
        </td>
    </tr>

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

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

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

<pre>
    Repros with Clang 17.0.3 and VS 2022 17.11 Preview 1. MSVC accepts, but Clang rejects.

```
C:\Temp>"C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Auxiliary\Build\vcvarsall.bat" x64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.11.0-pre.1.0
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Temp>clang-cl -v
clang version 17.0.3
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\Llvm\x64\bin

C:\Temp>type meow.cpp
```
```cpp
#include <variant>
using namespace std;

struct UDT {
    UDT() {}
    ~UDT() {}
};

int main() {
    using V = variant<int, double, UDT>;
    [[maybe_unused]] V a{1729};
    [[maybe_unused]] V b{3.14};
    [[maybe_unused]] V c{UDT{}};
}
```
```
C:\Temp>cl /EHsc /nologo /W4 /std:c++17 /MTd /Od meow.cpp
meow.cpp

C:\Temp>cl /EHa /nologo /W4 /std:c++17 /MTd /Od meow.cpp
meow.cpp

C:\Temp>clang-cl /EHsc /nologo /W4 /std:c++17 /MTd /Od meow.cpp

C:\Temp>clang-cl /EHa /nologo /W4 /std:c++17 /MTd /Od meow.cpp
meow-aeb2d1.obj : error LNK2019: unresolved external symbol "public: __cdecl std::_Variant_storage_<0,double,struct UDT>::~_Variant_storage_<0,double,struct UDT>(void)" (??1?$_Variant_storage_@$0A@NUUDT@@@std@@QEAA@XZ) referenced in function "int `public: __cdecl std::_Variant_storage_<0,int,double,struct UDT>::_Variant_storage_<0,int,double,struct UDT><1,double,0>(struct _Variant_storage_<0,int,double,struct UDT>::integral_constant<unsigned __int64,1>,double &&)'::`1'::dtor$3" (?dtor$3@?0???$?0$00N$0A@@?$_Variant_storage_@$0A@HNUUDT@@@std@@QEAA@U?$integral_constant@_K$00@1@$$QEAN@Z@4HA)
meow-aeb2d1.obj : error LNK2019: unresolved external symbol "public: __cdecl std::_Variant_storage_<0,struct UDT>::~_Variant_storage_<0,struct UDT>(void)" (??1?$_Variant_storage_@$0A@UUDT@@@std@@QEAA@XZ) referenced in function "int `public: __cdecl std::_Variant_storage_<0,double,struct UDT>::_Variant_storage_<0,double,struct UDT><1,struct UDT,0>(struct _Variant_storage_<0,double,struct UDT>::integral_constant<unsigned __int64,1>,struct UDT &&)'::`1'::dtor$3" (?dtor$3@?0???$?0$00UUDT@@$0A@@?$_Variant_storage_@$0A@NUUDT@@@std@@QEAA@U?$integral_constant@_K$00@1@$$QEAUUDT@@@Z@4HA)
meow.exe : fatal error LNK1120: 2 unresolved externals
clang-cl: error: linker command failed with exit code 1120 (use -v to see invocation)
```

Reduced from the original user report [DevCom-10647850](https://developercommunity.visualstudio.com/t/Linking-bug-of-std::unordered_map-with-s/10647850) "Linking bug of `std::unordered_map` with `std::variant` Value Type with latest MS Visual Studio Community 2022".
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWF9v2zgS_zT0CyGBoiQ7fvCDLcfoYdted5P6DvtiUNTIZpciBZJSknvYz34YyXHsbtpegtwusIBgUTOc4fz7kUML79XeACxIviL5eiK6cLBucROgPQhz-170oocvk9JWD4tfoHXW0zsVDrTQwuxpMotZnFJhKrq9oZxxjqQkoZ8c9AruaBLTDzfbggopoQ2e8IKWXThKO_gCMviYsDVhy-PvlB2f4bMg6ZLkxS00LUmvCedHwidn9040dKM0eJIXH5R01ts60K3yndD0JnSVsiQv0KhBYDCI5MW2IHmx7O6VVsI9kLxYdUpXJC962QvnhdZxKQLhnN5Ps6NR_G_3nPl1GbIxi2voQdsWHC1s02B-PznbtIH2Q35jFrUO4iRmF4oK2z44tT8ESviVJHw-KntKTmFda50Iypq_eWTz1WU55Wt6bXrlrGnABKqMCkpo9R-oaG0dSZeU8BkWHJ-dw-Gy_iXCJpKaRv3IHgi0B-eVNUc0jpxb4fYQUO_91XQ3zaJWRnfKVPbOR43v5XHWwYGoaGMr0Di3tV7dj6x_GB-E1lCt1WDeGwHv1lqNcu9135C8QI_zolTm206HhxZoA_Yulm377CZx-nyawFNlpO4qoCQteuGUMAE3kIHbeWX21IgGfCskUB8qkq7OLfDBdTLQz-tbSmZHDqUUCYRfYWEjebZ-4vz-PAsHl6qVCbQRypxNPikZDdtSkq7pyehCmYD7ZmW7UgOOcKn0-qQXJYfde9WIhxJ2nek8VCRfY9FtqSCzVTLj83NTfiBSktkqjZPsBSKSzFZo1-j7udenUHwjac8XOiV8c_3OS3wbq-3e4uhfGf4O-VpKwleEr5IZkj7cVvj6Z_VVpXxVN99ZSvwJKx3R-zau_XiJt3ApElDyKolt-YXiNgDOWUfff_yJs2SOhM448Fb3UFG4D-CM0NQ_NKVFI3jblVpJnLfbyQqkHsG2JOlytx0rfOeDdWIPO5IWjPDiVOdPIByqHWV-f6EQv-qtqgif43GOiEs3JN0k-OLZH3VljPCMLUnGPn5GDRkbH7R5GPx8vUTuv39F6DqowYGRUFFlaN0Ziecaeo0YJ1P2CudHrH8vBK-TLJJzJhtjc5zzeluUCbB3Qu-kxdNi2K06MzSUFd3tlAl4oBXJsNxREyV8OjxzPOoGNWTKktNHFawjPEufMnaiZIykGzbmcEzh8M0zxj4-Jm6c9IPsvvt-ej-PGv7oXcZ2Pw3LkYwloz7Cs5-vlx9Jxn4lGcveLdGxvxA9LwHNG2HlL4LKa0DyXXic0f5XiLwdOM47jv8HQM6S9BKkvDVQLtQ9h5gY7mGASi2C0E-ASRLOkMyfg4w_64YjqU9Iw4FW5jdwVB6vMbVQGqrxDgv3KlBpK6CoHYPZeaBRT4OlHoAq01s5XlYeTfy6iRl-f4Gqw9KunW1oOAC1Tu0VQrnz4KiD1rqAzdMa-sI2UcKm2ewqZ9g88atDCK3H1PIN4Zvq8eKFBndGhYe4HxprP_TVsbQN4ZtA-Oa9Mr8ps4_Kbh_ZOjrhpTPWVeCg2jWijdDRyBO-OS2KTSfnR2ladntqa4Tg8wrIlI3BOp_x2JtOGd0K3QG9xR59mKZFAB_oh5uvbpXFozvDlZBwHk-qRVrN07mYwCKZJdOc8WyaTg6L-dUV5DIvpcyhrucVL_MZy3I2ZSWbz3k9UQvOeMZynnKeZDyNRQ2iZtk8r1nNpchIxqARSsda901s3X6ivO9gMU95nky0KEH74Q8Pzg3c0YFJ8LaynrgFymBQPcmYVj74Jy1BBQ0LvGhc9lmnIA3_dXwjUtCo4B_L8QUHwaRzenFZJHsVDl15rAW07viKWme_gMTqGHzCvI8-9wv-3wAAAP___l8h-A">