Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/11/2014, 16:56
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 4 meses
Puntos: 32
Respuesta: Crear plantilla dynamic. Lo que viene a ser tuple para struct, hacerlo par

De momento he cambiado un poco de estrategia ya que el constructor copia de la unión me estaba dando dolores de cabeza. Ahora tengo esto:

Código C++:
Ver original
  1. #define stringify(s) istringify(s)
  2. #define istringify(s) #s
  3.  
  4. template <class... Ts> union variant {};
  5.  
  6. template<>
  7. union variant<> {
  8.   variant() {};
  9.   ~variant() {};
  10. };
  11.  
  12. template <class T, class... Ts>
  13. union variant<T, Ts...> {
  14.   variant() {};
  15.   ~variant() {};
  16.  
  17.   T head;
  18.   variant<Ts... > tail;
  19. };
  20.  
  21.  
  22. template<typename... Ts>
  23. struct dynamic {
  24.     std::string type;
  25.     variant<Ts...> vnt;
  26. };
  27.  
  28. int main() {
  29.     dynamic<int, std::string> test;
  30.     return 0;
  31. }

Ahora toca definir constructores para dynamic al estilo:

Código C++:
Ver original
  1. template<typename U, typename T, typename... Ts>
  2. typename dynamic<T, Ts>::dynamic(const U& u) :  
  3.   /* si U == T --> type(stringify(U)), vnt(u) <-- constuctor no definido aún */
  4.   /* si U != T -->  algun tipo de recursividad que tengo que pensar */
  5. { }
Mañana sigo pensando.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils