Один упрощенный фрагмент кода выглядит следующим образом:
Код: Выделить всё
void f(const void*) {}
int main() {
constexpr float one[1] = { 1.0f };
[&]() {
f(one);
f(&one[0]);
}();
}
- В режиме /std:c++17 MSVC прекрасно принимает программу.
- В режиме /std:c++20 MSVC показывает две ошибки:
Код: Выделить всё
(6): error C2326: 'auto main::::operator ()(void) const': function cannot access 'one'
(7): error C2101: '&' on constant
- и в режиме /std:c++latest отображается только ошибка C2101.
Что изменилось в C++20 и более поздних версиях, из-за которых программа была отклонена?
Подробнее здесь: https://stackoverflow.com/questions/798 ... tudio-2026
Мобильная версия