<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60951>60951</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash while trying to use offsetof in template lambda.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ONEMK
</td>
</tr>
</table>
<pre>
This code crashes compiler when using clang 15.0.0 but compiles fine under newest versions od gcc and msvc
```cpp
#include <cstdio>
#include <cstddef>
struct Test
{
int a = 1;
inline static int sa = 2;
};
template< typename T , typename C , typename L >
consteval size_t GetOffsetOf( T C::* ptr , const L& of ){
C* pClass = nullptr;
return of(pClass);
}
template< typename T , typename L >
consteval const void* GetOffsetOf( const T* ptr , L ){
return ptr;
}
#define GET_OFFSET_OF( Type , Member ) GetOffsetOf( &Type::Member , []<typename T>( T* )->size_t{ return offsetof( T , Member ); } );
int main()
{
constexpr auto V1 = GET_OFFSET_OF( Test, a );
constexpr auto V2 = GET_OFFSET_OF( Test, sa );
printf( "addr: %lld | %lld\n" , (long long)V1 , (long long)V2 );
return 0;
}
```
Link to compiler explorer:
https://godbolt.org/z/d3dGadf78
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVM9v6zYM_muYC9HAlpLYPvjQOk0P61sPC3Z9kC0m0SZLhiSnr_3rB8lu07TdgAUBrR8U-X2fKArv1dEQ1bC-g_V2IcZwsq5--v3-x2-L1sqXen9SHjsrCTsn_InipB-UJofPJzI4emWO2Glhjpivl9kyw3YMb04eD8oQjkaSQ0PP5AOeyXlljUcr8dh1KIzE3p87yLaQ3c52k03_bhjmFcaV6fQoCYE3nQ9SWeD3_7Yp6XDZTdYHN3YB9-TDvFzcTQNERGUCXv8EIvAt5sCv3HTk44MIqkuHvEhu7N0Niu1lnGygftAiEPAGw8tARvSEewT2YdpcTx_xHX1njQ90Fhq9eqWfAR8oPB0OPlpgJe6xAX4b_-wWh-BSoHQIH4Ft0B4QWHVFtkmujRbeJ_Bm1HoI7oqpozA6gzbmmFxjlI8k_yfDbylNOM9WyQjpE7Npc_-R1-M1lxnkR-yfkAHjklINPtzvfz7tdn-kTxLuZaAU9Af1LcX41WcEwDbRa9J3dktHpucCvLmwjexi1AgXWHUD_H66MCjuLmrG2Ha-t-vcwO8Qii1eyZxsLLNeKAOsjJtfi3fS89fgUIzB4p95utWvhGPpswbFVY7vArD_DuC_RhicMmHWjAkpHfAow1priVA08xDWjQHGJglZqa05YjTAqgj6m1X2JdMsZfbNjb81jWn6qMzfGOylX9GvQVtHEdrkcQph8Onl7IDtjla2VoeldUdgu1dgO8nlg5CHolzImsuKV2JBdb4pinzD83W2ONVFVZasYKykoizyctWu1kUrCl4e2q6Vm81C1SxjPGOM5yte5dlyVeVSdHxDlVhJsepglVEvlF5qfe5j7oXyfqR6k1XrfKFFS9qn7syYoWdMm8BYbNaujmdu2vHoYZVp5YO_RAkqaKqb2LPx-aQ0YXAvsVUHi6On91JEZfDt-aIWfSvFcjE6XX8SR4XT2C472wPbxSTz52Zw9i_qArBdguaB7RL0fwIAAP__f5jaJQ">