Emplacement du crochet angulaire
Le premier crochet ouvrant après le nom d'un modèle est interprété comme faisant partie de la liste d'arguments du modèle, et non comme un opérateur supérieur à. Le premier > après le signe d'ouverture est interprété comme la fin de la liste des arguments du modèle, à moins qu'il soit placé entre parenthèses, qu'il fasse partie d'un modèle imbriqué ou qu'il fasse partie d'une expression de cast de style de modèle, par exemple static_cast<int>.
Le mauvais positionnement des crochets pointus (<>) entraîne de nombreuses erreurs de syntaxe de modèle. Vérifiez que vous utilisez l'espacement et les parenthèses appropriés pour différencier les crochets pointus des opérateurs tels que >, >> et ->. Par exemple :
TempClass< float, a > b ? a : b > test1;
doit être réécrit sous la forme :
TempClass< float, (a > b ? a : b) > test1;
De même, vous devez accorder une attention toute particulière lorsque vous utilisez des macros qui utilisent des crochets pointus pour des arguments template.