В настоящее время у вас есть нарушение ODR:
В обеих единицах перевода у вас есть (после замены)
auto myvar<int> = []() -> int&{
static int v;
return v;
};
, но лямбда-код объявляет разные типы для каждого TU, поэтому у вас есть lambda1
и lambda2
для myvar<int>
.
У каждой лямбды есть свой static
, поэтому вы видите этот результат на практике (но программа все равно плохо сформирована, NDR).