char、signed char、unsigned char の動作の違い
以下のコードは正常にコンパイルされますが、char は整数型とは動作が異なります。
cout ::ikIsX >() ::ikIsX >() ::ikIsX >()結果は、int8、uint8、char の 3 つの型に対する 3 つのインスタンス化パターンになります。なぜこれが起こるのでしょうか?
同じことは整数にも当てはまりません。 int と uint32 では 1 つのパターンのインスタンス化が行われ、signed int では別のパターンのインスタンス化が行われます。
その理由は、おそらく C が char を扱うためです。 signed char と unsigned char の 3 つの異なるタイプ。一方、int は signed int と同じです。これは本当ですか?それとも何かが足りないのでしょうか?
#include
using namespace std; typedef signed char int8; typedef unsigned char uint8; typedef signed short int16; typedef unsigned short uint16; typedef signed int int32; typedef unsigned int uint32; typedef signed long long int64; typedef unsigned long long uint64; struct TrueType {}; struct FalseType {}; template struct isX { typedef typename T::ikIsX ikIsX; }; // Это int==int32 неоднозначно //template bool getIsTrue(); template ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() 私は g 4.something を使用します
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3