Пространства имён
Варианты
Действия

std::signed_integral

Материал из cppreference.com
< cpp‎ | concepts
 
 
 
Определено в заголовочном файле <concepts>
template < class T >
concept signed_integral = std::integral<T> && std::is_signed_v<T>;
(начиная с C++20)

Концепт signed_integral<T> выполняется тогда и только тогда, когда T является целочисленным типом и std::is_signed_v<T> равно true.

[править] Примечание

signed_integral<T> может соответствовать типу, который не является целочисленным типом со знаком, например, char (в системе, где char имеет знак).

[править] Пример

#include <concepts>
#include <iostream>
 
void print(std::signed_integral auto i) {
    std::cout << "Целое со знаком: " << i << '\n';
}
 
void print(std::unsigned_integral auto u) {
    std::cout << "Целое без знака: " << u << '\n';
}
 
void print(auto x) {
    std::cout << "Нецелое: " << x << '\n';
}
 
int main() {
    print(42);     // знаковое
    print(0xFull); // без знаковое
    print(true);   // без знаковое
    print('A');    // зависит от платформы
    print(4e-2);   // нецелое (шестнадцатеричный float)
    print("∫∫∫");  // нецелое
}

Возможный вывод:

Целое со знаком: 42
Целое без знака: 15
Целое без знака: 1
Целое со знаком: A
Нецелое: 0.04
Нецелое: ∫∫∫

[править] Смотрите также

проверяет, является ли тип целочисленным типом
(шаблон класса) [править]
(C++11)
проверяет, является ли тип арифметическим типом со знаком
(шаблон класса) [править]