struct const_int { const int x = 1; };
int main(int argc, char **argv)
{
std::unordered_map<int, const_int> map0;
std::unordered_map<int, const_int> map1 { map0 }; // OK
map1 = map0; // Compile-time error
return 0;
}
Этот код работает в Visual C++ 2017, но завершается ошибкой с ошибкой компиляции в Visual C++ 2019:
14.23.27911\include\list(1210): error C2280: 'std::pair<_Kty,_Ty> &std::pair<_Kty,_Ty>::operator =(volatile const std::pair<_Kty,_Ty> &)': attempting to reference a deleted function
with
[
_Kty=int,
_Ty=const_int
]
Какая версия компилятора имеет правильную реализацию или поведение в этом случае не определено?