1
私は、bitshift操作の下で符号なしタイプのように動作するようにインスタンス化されるテンプレートタイプを必要とするクラスを作成しています。ビットシフトの下の負の数は、ビットシフトの動作の下で正の数とは異なる挙動を示すため、そうです。したがって、私の考えは、テンプレートパラメータとして取得したすべての型を、typedef内のそれの符号なしバージョンに変換し、内部的にはtypedefedバージョンのみを使用することでした。テンプレートのパラメータ型がこれをサポートしていない場合、単純にコンパイル時エラーが発生します。私が試したことは次のようになります。間違っていTypedefのテンプレートパラメータを変換する
template <class X>
class C
{
using Y = unsigned X;
};
は:error: type-id cannot have a name
が、これがすべてで可能であり、どのようにしたら?
@NathanOliverを:あなたは '型名のstd :: make_unsigned :: type'が意味ですか? [wandbox](http://melpon.org/wandbox/permlink/OSMG4kiPTbyBTKOT) - 'std :: make_unsigned_t'はエイリアスに' :: type'を必要としないC++ 14エイリアスです。 –
注:無効なタイプのコンパイル時にエラーが発生した場合、UBを現在持っているだけです。 'static_assert(std :: is_signed :: value || std :: is_unsigned ::値、「期待される符号付/符号なし型」); –
Jarod42
申し訳ありません。最後に '_t 'を忘れました。 – NathanOliver