std::signed_integral
Материал из cppreference.com
Определено в заголовочном файле <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) |
проверяет, является ли тип целочисленным типом (шаблон класса) |
(C++11) |
проверяет, является ли тип арифметическим типом со знаком (шаблон класса) |