es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo pasar un objeto span vacío?

¿Hay alguna forma de pasar un std::span vacío a una función?

Tengo una función como la siguiente:

bool func(const std::vector<int>& indices)
{
    if (!indices.empty())
    {
        /* hacer algo */
    }
}

// al llamarla con un vector vacío
const bool esAceptable { func(std::vector(0)) };

Y quiero cambiarla para que use <code>std::span</code> en lugar de <code>std::vector</code> para que también pueda recibir <code>std::array</code> y <em>raw array</em> como argumento.

Ahora aquí:

bool func(const std::span indices)
{
if (!indices.empty())
{
/* hacer algo */
}
}
“`

// al llamarla con un span vacío
const bool esAceptable { func(std::span()) }; // ¿Es válido este código?

¿Además, std::span soporta correctamente todos los contenedores contiguos (por ejemplo, std::vector, std::array, etc.)?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es un código válido pasar un std::span<int> vacío a una función.

    Y sí, std::span admite correctamente todos los contenedores contiguos como std::vector, std::array y otros, al igual que los arreglos sin procesar. Esto se debe a que std::span está diseñado para proporcionar una vista de memoria contigua, sin importar si proviene de un contenedor o de un arreglo.

Comments are closed.