負の整数値の内部表現が2の補数かどうかを調べるメタ関数を作ってみましょう。これは実はそんなに難しくありません。

-1の下位2ビットを調べてやればすぐに分かります。-1の下位2ビットが11(= 3)であれば2の補数表現です。

C++14以降であれば、次のようにしておけば多少は使い勝手がよくなります。

ところで、現実には2の補数表現以外の処理系に遭遇する可能性はほとんどありません。こういうのもあるということで参考にしていただければ幸いです。


元ネタ

↑ 1. 整数型に関するテンプレート