山かっこの配置
テンプレート名の後の最初の左角かっこは、大なり演算子をとしてではなく、テンプレート引数リストの一部として解釈されます。 左山かっこの後の 1 つ目の > は、テンプレートの引数リストの終わりと解釈され、かっこで囲まれていない場合は、入れ子のテンプレートの一部、または static_cast<int> のようなテンプレート スタイルのキャスト式の一部になります。
山かっこ (<>) の悪い配置で多くのテンプレート構文エラーが発生します。 >、>>、> などの演算子と山かっこを区別するために、適切な間隔とかっこを使用してください。 次に例を示します。
TempClass< float, a > b ? a : b > test1;
これは、次のように書き換える必要があります。
TempClass< float, (a > b ? a : b) > test1;
同様に、テンプレート引数として山かっこを使用するマクロを使用する場合は、特に注意してください。