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.

Desempaquetando el primer parametro del paquete de parametros de plantilla en c++.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

” Soy nuevo con las plantillas, especialmente con el paquete de parámetros y me pregunto si puedo obtener el primer valor del paquete.

Por ejemplo, el siguiente código:

Template & amp;lt; typename T, typename … Args & amp;gt;
Bool register (Args … args) {
Si no es así, Foo & amp;lt; T & amp;gt; (args …)
afirmar(std::is_same_v<std::string, args…[0]>);
(std::cerr << "Llamada fallida Foo con " + args…[0] + "\n");
}
}

Realmente, ¿cómo obtengo el primer valor en args …?

Vale la pena señalar que args .. puede contener diferentes tipos (cadena, booleano, etc.) “

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el primer valor en args..., puedes usar el operador de indexación [] con el índice 0. Por ejemplo, para afirmar que el primer argumento es de tipo std::string, puedes usar std::is_same_v<std::string, args...[0]="">. De manera similar, para obtener el valor del primer argumento como una std::string, puedes usar args[0].

    Aquí está una versión actualizada del código con estos cambios:

    `
    template <typename t,="" typename...="" args="">
    bool registrar(Args... args) {
    if (!Foo<t>(args...)) {
    assert(std::is_same_v<std::string, args...[0]="">);
    std::cerr << "Falló la llamada a Foo con " + std::string(args[0]) + "\n";
    }
    }
    `

    Tenga en cuenta que necesitamos convertir args[0] a std::string usando el constructor de std::string para concatenarlo con un const char*.</std::string,></std::string,>

Comments are closed.