C Template Metaprogramming Introducción
>> YOUR LINK HERE: ___ http://youtube.com/watch?v=4NKbmCfZ9OI
==== Sesión 8 - 28/ene/2022 === [ Curso: https://bit.ly/CPPGameDev-2021-Curso ] • Tras haber visto cómo funcionan las templates en C++ pasamos a la metaprogramación. La metaprogramación consiste en programas que usan como datos otros programas o a sí mismos. Nosotros la usaremos para que nuestro propio código sepa autoconfigurarse para las necesidades del usuario. • Seguiremos programando nuestro motor de videojuego Entidad Componente Systema (Game Engine Entity Component System, ECS). Conseguiremos que nuestro motor acepte cualquier componente o tag diseñado por el usuario y se autoconfigure como lo hacen los contenedores de la STL (Standar template library). Para ello, aprenderemos: • Tipos de datos en tiempo de compilación: constantes, tipos y templates • Usos de las Variadic templates • Creación de Listas de Tipos • Implementación de Type Traits (características de los tipos) • Template Value Metafunctions (Metafunciones que devuelven constantes) • Template Type Metafunctions (Metafunciones que devuelven tipos) • Template Template parameters (templates como parámetros de otras templates) • ==== Contenidos ==== • 00:00:00 Template Metaprogramming: introducción y objetivos • 00:03:45 Objetivo: Game Engine autoconfigurable en tiempo de compilación • 00:10:27 Problema: Configuración variable de Componentes y Tags • 00:13:20 Tiempo de compilación: Diagrama explicativo • 00:16:25 Listas de tipos: Typelists • 00:20:47 Problema: Asociación de tipos con identificadores • 00:30:30 static_assert: verificación durante la compilación • 00:40:50 Type Traits: información automática de tipos • 00:51:25 Cómo imprimir un tipo con _PRETTY_FUNCTION_ • 01:05:50 Template Value Metafunctions • 01:16:30 Cómo saber si dos tipos son el mismo (is_same) • 01:34:04 ¿Pertenece un tipo a una lista? Fold Expressions (contains) • 01:44:21 Keyword template en llamadas a nombres dependientes • 01:53:00 Template Type Metafunctions: funciones que devuelven tipos • 02:00:05 nth_type: obtener un tipo en un arrays de tipos o typelist • 02:26:23 Keyword typename en nombres dependientes de tipos • 02:35:45 Identificadores de Componente: índices en Typelists • 02:53:40 Autoconfiguración de tamaños de tipo: template IF • 03:09:17 Template Template Parameters • 03:15:24 Intercambiando contenedor variádico de tipos: lista a tupla (replace) • Con todo esto entenderemos mucho mejor cómo funcionan las templates, profundizaremos en sus capacidades y desbloquearemos mucho conocimiento útil para la creación de motores de videojuego modernos en C++20. • ============ • Clase de la asignatura Videojuegos 1 • Grado en Ingeniería Multimedia. • Universidad de Alicante. • Licensed Assets • Saboteur 2 (The Synthwave EP) / McKlain (https://mcklain.bandcamp.com/track/sa...) • - Original version by Rob Hubbard / Durell Software • La Guerra de Gamber - Menu Theme / McKlain (https://mcklain.bandcamp.com/track/la...) • #GameDev #Templates #CPP #Metaprogramming #Programming #IndieDev #Programación #Metaprogramación
#############################
