2012-01-02 4 views
10

¿Hay alguna manera de reemplazar el idioma Xmacro utilizando las características de C++ 11, y preferiblemente no usar el preprocesador? Pensaba que las plantillas de tuplas se podrían usar, pero todavía estoy tratando de asimilar cómo funcionan.¿Hay una plantilla/constexpr/C++ 11 forma de reemplazar X-macros?

+1

+1 por alertarme sobre el hecho de que esta técnica tiene un nombre. Lo he visto antes en el código y lo he usado. Pero no sabía que se llamaba algo. –

Respuesta

5

XMacros son una herramienta general para hacer una variedad amplia de . Muchos de los cuales (como crear una lista de enumeradores, cadenas, etc.) van más allá de las capacidades de las plantillas de cualquier tipo.

Probablemente hay algunos casos en los que puede encontrar una manera de reemplazar con plantillas. Pero ciertamente no todos.

+0

esperaba que ese fuera el caso. Los "algunos casos" que estoy usando en este momento, y me gustaría reemplazar con plantillas, es la enumeración de enumeraciones. – Naddiseo

+1

@Naddiseo: para ese caso, absolutamente no. Las plantillas no tienen la capacidad de transformar un token en la representación de cadena de ese token, que es lo que eso requeriría. –

+0

C++ 11 realmente podría usar algunas capacidades más potentes de procesamiento y reflexión de cadenas en tiempo de compilación. Algo como 'std :: enum_name :: value() -> const char *' sería glorioso. –

Cuestiones relacionadas