Проверка функции, может ли целочисленный тип соответствовать значению, возможно, другого (целочисленного) типа

Можно ли создать шаблонную функцию, которая проверяет, может ли примитивный тип данных соответствовать значению потенциально различного примитивного типа данных? Позволять's ограничивают область действия целочисленными типами на данный момент.

Точнее: возможно ли создатьодин подходит всем " шаблонные функции еще без получения предупреждений компилятора (логическое выражение всегда true / false, сравнение со знаком / без знака, неиспользуемая переменная) и без отключения проверки предупреждений компилятора? Функции должны также максимально ограничивать проверки во время выполнения (все тривиальные случаи должны быть исключены во время компиляции). Если возможно, я бы предпочел избегать использования расширений из C ++ 11 и т. П. (Если только "быстрый" замена для "старый» C ++ существует).

Заметка: "значение" не известен во время компиляции, только его тип.

Пример ожидаемого поведения:

int main(int argc, char** argv) {
    for (int i = 1; i < argc; i++) {
        const int value = atoi(argv[i]);
        std::cout < value < ": ";
        std::cout < CanTypeFitValue

Ответы на вопрос(6)

Ваш ответ на вопрос