Предполагается ли компилировать следующий код?
#include <type_traits>
void foo() {
const std::pair<int, int> x = {1, 2};
auto [a, b] = x;
static_assert(std::is_const_v<decltype(a)>);
static_assert(std::is_const_v<decltype(b)>);
}
Итак, это ошибка MSVC?
Стандарт здесь не так прост (я бегло просмотрел), но, учитывая правила для auto
, я полагаю, что a
и b
следует копировать, отбрасывая cv-qualifier.