Programación genérica v.s. Metaprogramación

¿Cuál es exactamente la diferencia? Parece que los términos se pueden usar de manera intercambiable, pero al leer la entrada de Wikipedia para Objective-c, me encontré con:

Además del estilo de programación procesal de C, C ++ admite directamente ciertas formas de programación orientada a objetos, programación genérica y metaprogramación.

en referencia a C ++. ¿Entonces aparentemente son diferentes?

Respuestas a la pregunta(6)

Su respuesta a la pregunta