He estado tratando de leer los encabezados de los rasgos de los tipos de Boost, y ahora me siento bastante enfermo dada la intensa falta de lectura proporcionada por innumerables #define. Y luego un poco más #definir.Boost type_traits is_array
Para ser específico, estoy interesado en averiguar sobre los siguientes 3 rasgos: si un tipo T es una matriz, una clase o una enumeración.
¿Alguien puede ayudar a sugerir alguna forma de descifrar el método detrás de la aparente locura? Al igual que la teoría detrás de cómo averiguar el rasgo de un tipo, cualquier material de lectura relevante etc.
Una forma de deshacerse de incontables ifdefs que le molestan es ejecutar el preprocesador de código a través, es decir, usar la opción '-E' con' gcc'. Luego puede consultar el código que compilará su plataforma para su plataforma. Generalmente, los rasgos se implementan usando SFINAE, especialización de plantilla (parcial) y extensiones específicas del compilador. –
+1 para que sus agallas se sumerjan en los encabezados de impulso. ;) De hecho, solo puedo recomendar eso, especialmente los encabezados de Boost.Function, que son bastante educativos para mí. – Xeo