En C ++ 11, ahora es la syntax válida:
vector<vector> MyMatrix;
mientras que anteriormente, tenía que escribirse así (observe el espacio):
vector<vector > MyMatrix;
Mi pregunta es: ¿cuál es la solución que usa el estándar para permitir la primera versión?
¿Podría ser tan simple como hacer >
un token en lugar de >>
? Si eso no es, ¿qué no funciona con este enfoque?
Considero que formularios como myTemplate>3 >
son un problema, ya que puedes myTemplate>3)>
haciendo myTemplate>3)>
.
Se soluciona agregando un caso especial a las reglas de análisis al analizar los argumentos de la plantilla.
C ++ 11 14.2 / 3: al analizar una plantilla-argumento-lista , la primera> no anidada se toma como el delimitador final en lugar de un operador mayor que. De manera similar, el primer
>>
no nested se trata como dos tokens consecutivos pero distintos>
, el primero de los cuales se toma como el final de la lista-argumento- plantilla y completa el ID-plantilla .