Возвращение gsl :: span из функции - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь напечатать диапазон, возвращенный функцией, но он не перехватывает данные. Как правильно вернуть диапазон из функции?

#include <gsl/span>
#include <iostream>
#include <memory>

gsl::span<int> res(){
    std::array<int, 3> str{100, 200,300};
    gsl::span<int> a{str};
    return gsl::span<int>(a.data(), a.size());
}
int main() {
    auto test{res()};
    for (const auto &i: test)
        std::cout << i << std::endl;
}

1 Ответ

2 голосов
/ 21 апреля 2020

Проблема в том, что span не имеет значений, поэтому вы возвращаете висячий диапазон.

Вы должны вернуть std::array (по значению), которому принадлежит значение.

...