コンパイラ エラー C2891
'parameter': テンプレートのパラメーターのアドレスを取得できません
テンプレート パラメーターのアドレスは、lvalue を指定するまで取得することはできません。 型パラメーターはアドレスを持たないので、lvalue ではありません。 lvalue ではないテンプレート パラメーター リストの型以外の値にもアドレスが含まれます。 これは、コンパイラ エラー C2891 の原因となるコードの例です。これは、テンプレート パラメーターとして渡される値が、コンパイラによって生成されたテンプレート引数のコピーであるためです。
template <int i> int* f() { return &i; }
参照型などの lvalue であるテンプレート パラメーターは、そのアドレスを取得できます。
template <int& r> int* f() { return &r; }
このエラーを修正するには、lvalue でない限り、テンプレート パラメーターのアドレスを取得しないでください。