Мне нужно замаскировать некоторые ведущие бит значения. Если значение без знака, я могу утверждать (гарантировать), что какое-то произвольное количество старших бит не задано, то есть гарантированно ограниченное значение.
Если он подписан, мне нужно замаскировать ведущие биты (превращение значения в некоторую непереносимую кучу бит, да, я знаю об этом:-)). Я хотел бы сохранить операцию маскировки, если значение не указано.
Итак, у меня в основном есть
template<typename T, some more template parameters>
class {
    unsigned transform(T value) {
        ...
        if (isSigned(T)) {
            value &= mask;
        }
        ...
    }
}
Есть ли простой способ записи isSigned(), который можно оценить во время компиляции (чтобы оптимизатор мог удалить неподписанный мертвый код)?
Конечно, я мог бы добавить еще один параметр шаблона...
