Размещение угловых скобок
Первая открывающая квадратная скобка после имени шаблона интерпретируется как часть списка аргументов шаблона, а не оператор "больше чем". Первый элемент > после открывающей угловой скобки интерпретируется как окончание списка аргументов шаблона, если только он не включен в скобки, не является частью вложенного шаблона или выражения приведения в стиле шаблона, например static_cast<int>.
Неправильное размещение угловых скобок (<>) вызывает множество синтаксических ошибок шаблона. Убедитесь, что используются нужный интервал и тип скобок для различения угловых скобок от операторов, таких как >, >> и ->. Например:
TempClass< float, a > b ? a : b > test1;
необходимо переписать в следующем виде.
TempClass< float, (a > b ? a : b) > test1;
Кроме того, необходимо проявлять особое внимание при использовании макросов, в которых угловые скобки используются как аргументы шаблонов.