Al buscar en el estándar N3291 No encuentro ninguna referencia para tuple
para admitir begin()
y end()
. Pero cuando miro mis notas de años atrás, me parece haber anotado que necesito analizar eso más tarde. Y aquí estamos.C++ 0x tuplas no tienen iteradores, ¿verdad?
No encuentro ningún rastro de tuple<...>.begin()
o tuple<...>.end()
en el estándar actual de C++ 0x, ¿es correcto? No es posible pasar una tupla con sus iteradores a un algoritmo, ni uno for
-loop, ¿no?
tuple<int,string,double> val;
for(auto a : val) cerr << val; // very wrong!
que es de sentido claro, porque lo que debería ser auto
?
Necesito la confirmación de que mis notas contienen un error, y que no hay forma de obtener esos iteradores para los elementos de tupla. ¿O tal vez había un camino abandonado en la discusión de estándares?
Nota: soy consciente de que uno puede utilizar TMP o plantillas variadic para implementar un hacer-para-todos-elementos-of-a-tupla, pero mi pregunta es realmente acerca de iteradores.
¿Por qué no for-loop con índice de 0 a ':: tuple_size' y acceder a los elementos a través de' std :: get '? – osgx
@osgx: ¡El parámetro de plantilla tiene que ser una constante en tiempo de compilación! –
Compruebe esta pregunta y sus respuestas http://stackoverflow.com/q/1198260/196561 – osgx