In C ++ 11, questa è ora la syntax valida:
vector<vector> MyMatrix;
mentre in precedenza, doveva essere scritto in questo modo (notare lo spazio):
vector<vector > MyMatrix;
La mia domanda è qual è la correzione che lo standard utilizza per consentire la prima versione?
Potrebbe essere semplicemente come fare >
un token invece di >>
? Se non è così, cosa non funziona con questo approccio?
Considero che forms come myTemplate>3 >
siano un problema, dato che puoi disambigarle facendo myTemplate>3)>
.
Viene risolto aggiungendo un caso speciale alle regole di analisi durante l’analisi degli argomenti del modello.
C ++ 11 14.2 / 3: Quando si analizza un elenco argomento-modello , il primo non annidato viene preso come delimitatore finale anziché come operatore maggiore di. Allo stesso modo, il primo non annidato
>>
viene considerato come due token consecutivi ma distinti, il primo dei quali viene considerato come la fine dell’elenco-argomento- modello e completa l’ id-modello .