¿Cuál es la forma más simple y menos molesta de indicar al compilador, ya sea mediante opciones de compilador, #define
s, typedef
s, o plantillas, que cada vez que digo T
, realmente significa T const
? Preferiría no hacer uso de un preprocesador externo. Como no utilizo la palabra clave mutable
, sería aceptable reutilizar para indicar estado mutable.Hacer todos los tipos constantes por defecto en C++
Editar: Dado que la intención de esta se había equivocado por completo (y ya que no estaba en torno a un par de horas para aclarar), vamos a explicar. En esencia, solo quiero saber qué sistemas están disponibles para manipular el sistema de tipos en tiempo de compilación. No me importa si esto crea un código no estándar, malo, inmanejable e inútil. No voy a usarlo en producción. Es solo una curiosidad.
potenciales (subóptima) soluciones hasta ahora:
// I presume redefinition of keywords is implementation-defined or illegal.
#define int int const
#define ptr * const
int i(0);
int ptr j(&i);
typedef int const Int;
typedef int const* const Intp;
Int i(0);
Intp j(&i);
template<class T>
struct C { typedef T const type; typedef T const* const ptr; };
C<int>::type i(0);
C<int>::ptr j(&i);
-1 por mala idea. – piotr
No tenemos claro qué intenta lograr con esto. Seguramente no se trata solo de evitar escribir const tantas veces.O para preguntar de otra manera: ¿Puede decirnos qué espera lograr al tener estos tipos de const? Puede haber un mejor enfoque para su objetivo final. . – MtnViewMark
@MtnViewMark: Honestamente, sentí curiosidad por saber qué medios están disponibles para manipular el sistema de tipos en tiempo de compilación. El ejercicio real probablemente no importa en lo más mínimo. Me sorprendió bastante que @piotr me bajara la votación. –