Проблема здесь в том, что values[0]
- это int &
. Убедитесь сами:
static_assert(std::is_same_v<decltype(values[0]), int &>);
Создание вектора ссылок - все это неправильно. Чтобы это исправить, просто используйте decltype
для всего вектора.
std::vector values{1, 2, 3, 4, 5, 6};
decltype(values) ints(values.cbegin(), values.cend());
Для вашего примера, в действительности ничего этого не нужно, потому что вы просто копируете вектор. Так что вы можете просто сделать это:
std::vector ints = values;
// Or avoid CTAD entirely
auto ints = values;