Parámetros de Plantilla No Tipo
Al definir una plantilla, no solo podemos especificar tipos, sino también pasar valores a esos tipos. Esto significa que podemos crear plantillas que se comportan de manera diferente según los valores proporcionados, pero volveremos a este tema un poco más adelante.
main.cpp
123456789101112#include <iostream> // Non-type parameter means we won't use typename // Instead you can use an actual type for it template<int N> void PrintValue() { std::cout << N << std::endl; } int main() { // Call the template function with a literal integer PrintValue<5>(); // 5 }
La principal ventaja de este enfoque es que todos los cálculos se realizan en tiempo de compilación, lo que permite su uso en metaprogramación.
main.cpp
1234567891011#include <iostream> // Template function to calculate the square of a non-type parameter I template<int I> int Square() { return I * I; } // Return the square of I int main() { // The result of Square<5>() is computed at compile time int b = Square<5>(); // b will be initialized to 25 }
Al ejecutar el programa compilado, el valor de b ya será 25. El cálculo se realiza en tiempo de compilación, lo que resulta en cero operaciones en tiempo de ejecución.
¡Gracias por tus comentarios!
single
Parámetros de Plantilla No Tipo
Desliza para mostrar el menú
Al definir una plantilla, no solo podemos especificar tipos, sino también pasar valores a esos tipos. Esto significa que podemos crear plantillas que se comportan de manera diferente según los valores proporcionados, pero volveremos a este tema un poco más adelante.
main.cpp
123456789101112#include <iostream> // Non-type parameter means we won't use typename // Instead you can use an actual type for it template<int N> void PrintValue() { std::cout << N << std::endl; } int main() { // Call the template function with a literal integer PrintValue<5>(); // 5 }
La principal ventaja de este enfoque es que todos los cálculos se realizan en tiempo de compilación, lo que permite su uso en metaprogramación.
main.cpp
1234567891011#include <iostream> // Template function to calculate the square of a non-type parameter I template<int I> int Square() { return I * I; } // Return the square of I int main() { // The result of Square<5>() is computed at compile time int b = Square<5>(); // b will be initialized to 25 }
Al ejecutar el programa compilado, el valor de b ya será 25. El cálculo se realiza en tiempo de compilación, lo que resulta en cero operaciones en tiempo de ejecución.
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla