テンプレート引数としてのポインタのキャスト:ComeauとMSVCのコンパイル、GCCの失敗
template<int* a>
class base {};
int main()
{
base<(int*)0> test;
return 0;
}
ComeauとMSVCの両方で問題なくコンパイルできます(使用されていない変数についてはComeauの警告を除きます)。GZはbase<(int*)0> test;
行で失敗します.
関数 ` int main() ': 整数型または列挙型以外の型へのキャストは定数式には現れません
テンプレート引数1が無効です
それはどういうことですか?そして、誰が正しいのですか?このコードをコンパイルする必要がありますか?私のGCCバージョンはが非常に古い(3.4.2)ので、それが何かと関係するかもしれないことに注意する価値があります。ありがとう。
: ます。test.cpp:6:エラー:GCC 4.4.1で6:エラー:テンプレート整数または列挙型以外へのキャストは、定数式 TEST.CPPに表示することはできません引数1は無効です test.cpp:6:エラー: ';'の前の宣言で無効な型です。トークン – jdehaan
ありがとう、私はこれが私のバージョンとは関係ないことを知っています。 – GRB
歓迎します。私はコンパイルするためにコードを少し修正しようとしました。わずかな違いは問題を明確にしていませんでした。 – jdehaan