Considere o seguinte código:
std::vector<float> foo = some_generator_function();
std::span<float> bar {foo};
/* Wrapper for C API that uses bar->data() and bar->size_bytes()
* if bar != nullptr, guaranteed not to change any data in bar.
* In some cases bar is constructed from a const C array.
*/
do_smth (&bar);
Este código compila e funciona bem, pois std::span
pode ser construído a partir de um std::vector
.
Agora, estou tentando envolvê-lo em uma função separada:
void do_wrap (const std::vector<float>& foo) {
std::span<float> bar (foo);
do_smth (&bar);
}
E surge o problema:
erro: nenhuma função correspondente para chamada para 'std::span<float>::span(const std::vector<float>&)'`
Mais precisamente, const std::vector<float>&
não satisfaz restrições.
Há alguma razão para isso? Estou suspeitando do const
qualificador por enquanto.
Construindo como bar (foo.data(), foo.size())
relatórios um erro semelhante.
Compilando com g++ 14.2.0, MinGW64.