programar - ejemplos de programas en c++ pdf
¿Qué es la monomorfización con contexto a C++? (3)
La reciente charla de Dave Herman en Rust dijo que tomaron prestada esta propiedad de C ++. No pude encontrar nada en torno al tema. ¿Alguien puede explicar qué significa la monomorfización?
La monomorfización significa generar versiones especializadas de funciones genéricas. Si escribo una función que extrae el primer elemento de cualquier par:
fn first<A, B>(pair: (A, B)) -> A {
let (a, b) = pair;
return a;
}
y luego llamo a esta función dos veces:
first((1, 2));
first(("a", "b"));
El compilador generará dos versiones de first()
, una especializada para pares de enteros y una especializada para pares de cadenas.
El nombre deriva del término del lenguaje de programación "polimorfismo", que significa una función que puede tratar con muchos tipos de datos. La monomorfización es la conversión de código polimórfico a monomórfico.
No estoy seguro de esto; ¿Podrías enlazar a la charla? Podría haber sido un comentario improvisado.
Herman podría haber acuñado un término para algo como la especialización de plantilla, que genera tipos / objetos que no están relacionados entre sí (no son polimorfos o "monomorfos") a partir de la plantilla, que es una estructura polimórfica.
No estoy seguro si alguien todavía está mirando esto, pero la documentación de la oxidación realmente menciona cómo logra una abstracción sin costo a través de este proceso:
https://doc.rust-lang.org/book/2018-edition/ch10-01-syntax.html