これは簡単です。標準C++ライブラリには、numeric_limitsというクラステンプレートがありますので、その静的データメンバis_signedを参照すればよいだけです。numeric_limitsクラステンプレートを使用するには、<limits>をインクルードする必要があります。
| 0 1 2 | numeric_limits<type>::is_signed | 
使用例:
| 0 1 2 3 4 5 | cout << "size_tは符号"      << (numeric_limits<size_t>::is_signed ? "付" : "無") << endl; cout << "ptrdiff_tは符号"      << (numeric_limits<ptrdiff_t>::is_signed ? "付" : "無") << endl; | 
C++11以降であれば、<type_traits>で定義されているis_signedクラステンプレートを使うこともできます。
| 0 1 2 | is_signed<type>::value | 
また、C++17以降であれば、is_signed_vを使うこともできます。
| 0 1 2 | is_signed_v<type> | 
使用例:
| 0 1 2 3 4 5 | cout << "size_tは符号"      << (is_signed<size_t>::value ? "付" : "無") << endl; cout << "ptrdiff_tは符号"      << (is_signed_v<ptrdiff_t> ? "付" : "無") << endl; | 
※ std::は省略しています。






