Posicionamento do colchete angular
A primeira abertura colchete após um nome de modelo é interpretado como parte da lista de argumentos do modelo, não como uma maior-que o operador.A primeira > Após o colchete de abertura é interpretado como o final da lista de argumentos do modelo, a menos que ela seja colocada entre parênteses, faz parte de um modelo aninhado ou faz parte de uma expressão de conversão do estilo do modelo, como static_cast<int>.
Posicionamento incorreto de colchetes angulares (<>) faz com que muitos erros de sintaxe de modelo.Certifique-se de que você use o espaçamento correto e parênteses para distinguir os colchetes angulares de operadores, como >, >> e ->.Por exemplo:
TempClass< float, a > b ? a : b > test1;
deve ser reescrito como:
TempClass< float, (a > b ? a : b) > test1;
Da mesma forma, dedique uma atenção especial ao usar macros que usem os colchetes angulares como argumentos de modelo.