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 << "Signed integral: " << i << '\n';
}
 
void print(std::unsigned_integral auto u) {
    std::cout << "Unsigned integral: " << u << '\n';
}
 
void print(auto x) {
    std::cout << "Non-integral: " << x << '\n';
}
 
int main() {
    print(42);     // 有符号的
    print(0xFull); // 无符号的
    print(true);   // 无符号的
    print('A');    // 依赖于平台
    print(4e-2);   // 非整型 (hex-float)
    print("∫∫∫");  // 非整型
}

可能的输出:

Signed integral: 42
Unsigned integral: 15
Unsigned integral: 1
Signed integral: A
Non-integral: 0.04
Non-integral: ∫∫∫

参阅

检查类型是否为整数类型
(类模板)
(C++11)
检查类型是否为有符号算术类型
(类模板)