次の方法で共有


コンパイラ エラー C2891

'parameter': テンプレートのパラメーターのアドレスを取得できません

テンプレート パラメーターのアドレスは、lvalue を指定するまで取得することはできません。 型パラメーターはアドレスを持たないので、lvalue ではありません。 lvalue ではないテンプレート パラメーター リストの型以外の値にもアドレスが含まれます。 これは、コンパイラ エラー C2891 の原因となるコードの例です。これは、テンプレート パラメーターとして渡される値が、コンパイラによって生成されたテンプレート引数のコピーであるためです。

template <int i> int* f() { return &i; }

参照型などの lvalue であるテンプレート パラメーターは、そのアドレスを取得できます。

template <int& r> int* f() { return &r; }

このエラーを修正するには、lvalue でない限り、テンプレート パラメーターのアドレスを取得しないでください。