En el documento de propuestas Variadic Templates de C++ 0x Link hay un ejemplo de una clase que admite un número arbitrario de dimensiones. He copiado a continuación:Variaded Templates Multidimensional Array Container
template<typename T, unsigned PrimaryDimension, unsigned... Dimensions>
class array { /* implementation */ };
array<double, 3, 3> rotation matrix; // 3x3 rotation matrix
Por desgracia, no se proporciona la aplicación. Como soy relativamente nuevo en las plantillas variadic, me gustaría ver una implementación de este contenedor.
Gracias a cualquiera que pueda proporcionar una implementación simple.
Gracias por la respuesta, Faisal. Eso es simplemente increíble. Muy elegante. Lo pregunté principalmente porque tengo una biblioteca de arreglos multidimensionales de tamaño fijo (Enlace aquí: http://code.google.com/p/fsma/) que proporciona envoltorios delgados alrededor de matrices incorporadas de 2d y 3d y es análoga a std: :formación. Me preguntaba cómo implementar una versión que permite un número arbitrario de dimensiones usando plantillas variadic después de leer el Documento del Comité Estándar sobre ellas. ¡No conocía el poder de las plantillas variadas hasta que leí tu respuesta! – Ricky65
Para el comentario 2011-Ago-14 de @ faisal-vali, no estoy seguro de lo que intentas construir. No 'template arrayX ' se traduce a algo como 'arrayX ' given 'long, 2, 3, 5 'como los parámetros. El parámetro variadic debe expandirse a una lista separada por comas, cuyos límites de matriz anidados no califican. –
CTMacUser
@CTMacUser Sí, por supuesto, tiene razón; mi comentario carece de sentido y debería ser afectado. –