Сама программа проста
template <typename T>
void foo(std::vector<T>& data) {
// ...
}
и
template <typename T>
void bar(std::vector<T> data) {
// ...
}
Я пытаюсь отладить эти две функции в CLion
, но информация о переменной data
совершенно другая.
Если передать по значению (bar
), data
- это именно то, что я передал.Однако при передаче по ссылке (foo
) размер data
всегда равен 1 и объединяется с итераторами __begin__
и __end__
, а не с явно заданными значениями.
Итак, если reference
это просто alias
, почему reference
вызывает такую разницу?
При доступе к data
внутри двух функций они ведут себя одинаково.Меня смущает то, что стили отладки отображаются по-разному.
Отладка для foo
:
Отладка для bar
: