2016-03-29 12 views
1

私は独自の型特性の実装を試みたときに、結果をstd <type_traits>と比較しました。私は機能するべきだと思ったタイプfloat (int) constのタイプ形質をチェックしようとしました。私は奇妙な結果を得たので、この型を標準型の型に渡そうとしました。float(int)constの型特性

このテストの
std::cout << std::is_function<float (int) const>::value; 
std::cout << std::is_compound<float(int) const>::value; 
std::cout << std::is_pointer<float(int)const>::value; 
std::cout << std::is_class<float(int)const>::value; 
std::cout << std::is_union<float(int)const>::value; 
std::cout << std::is_member_pointer<float(int)const>::value; 
std::cout << std::is_array<float(int)const>::value; 
std::cout << std::is_scalar<float(int)const>::value; 
std::cout << std::is_enum<float(int)const>::value; 
std::cout << std::is_object<float(int)const>::value; 

出力は次ました:

0100000001 

意味このタイプは、化合物&オブジェクトが、スカラーではないことを、ここに私のテストコードです。 http://www.cplusplus.com/reference/type_traits/によれば、クラス、共用体または配列でなければならず、どちらも真ではありません。このタイプの正しい結果は何でしょうか?私はMSVC 2015を使用しています。

+1

リンクしたページのどの部分が 'float(int)const'をクラス、共用体、または配列型にするべきだと思いますか? – user2357112

+0

化合物、スカラーではないという事実は、これらの3つの可能性だけを残します。 –

+0

また、それぞれ1ビットの出力を出力する10行を出力しましたが、出力は8ビットしか出力しませんでした。コードと出力が一致しません。 – user2357112

答えて

1

これはMSVS実装のバグです。 float(int) const is both function and compound

まだ接続されていない場合は接続してください(接続されていないようです)。

私は末尾がconst(これは無視される/取り除かれるはずです)が物事を投げ捨てていると思われます。

+0

関数のテンプレートの部分的な特殊化の場合、remove_cvは機能しないようです。 GCCの実装は可能なすべてのcvの組み合わせに特化しています。 –

関連する問題