在C 型別特征中
std::is_integral<T>:value即使T是bool,也會回傳true,根據其描述,這是正確的。
但是,如果 bool 是一個與其他積分型別不同的型別,為什么它在這種情況下被認為是積分型別? 為什么我們沒有一個單獨的std::is_boolean型別特質呢?
#include <iostream>
#include <type_traits>
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_same<int, bool>:value << ' '; // ~ false.
std::cout << std::is_same<unsigned int, bool> 。 :value << ' '; // ~ false.
std::cout <<'
'。
std::cout << std::is_integral<bool>:value << ' '; / ~ true
return 0;
}
uj5u.com熱心網友回復:
它是一個積分型別,所以它可以出現在積分常數運算式中。這在撰寫模板時相當重要--true和false通常被用作非型別模板引數。
uj5u.com熱心網友回復:
bool是一個單位元的積分型別。 有許多積分型別 -- int, long, long long, std::uint32_t.
bool是一個積分型別的事實可以追溯到C 的開始,甚至可以追溯到C,1 == 0回傳一個整數。
如果你想檢測bool,使用is_same<T, bool>。
有一種語言很容易像C 一樣,bool不是整體。 但那不是C 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329400.html
標籤:
