c++11:std::is_same
標頭檔案:<type_traits>
定義:
template< class T, class U >
struct is_same;
功能:
若 T 與 U 指名同一型別(考慮 const/volatile 限定),則提供等於 true 的成員常量 value 。否則 value 為 false 。
滿足交換律,即對於任何二個型別 T 與 U , 若有is_same<T, U>::value == true 必有 is_same<U, T>::value == true 。
#include <iostream>
#include <type_traits>
#include <cstdint>
void print_separator()
{
std::cout << "-----\n";
}
int main()
{
std::cout << std::boolalpha;
// 一些實現定義狀況
std::cout << std::is_same<int, std::int32_t>::value << '\n';
// 若 'int' 為 32 位則通常為 true
std::cout << std::is_same<int, std::int64_t>::value << '\n';
// 若使用 ILP64 資料模型則可能為 true
print_separator();
// 'float' 決非整數型別
std::cout << std::is_same<float, std::int32_t>::value << '\n'; // false
print_separator();
// 'int' 為隱式的 'signed'
std::cout << std::is_same<int, int>::value << "\n"; // true
std::cout << std::is_same<int, unsigned int>::value << "\n"; // false
std::cout << std::is_same<int, signed int>::value << "\n"; // true
print_separator();
// 不同於其他型別, 'char' 既非 'unsigned' 亦非 'signed'
std::cout << std::is_same<char, char>::value << "\n"; // true
std::cout << std::is_same<char, unsigned char>::value << "\n"; // false
std::cout << std::is_same<char, signed char>::value << "\n"; // false
}
相關文章
- c++11:std::boolalpha、std::noboolalphaC++
- c++11:std::bindC++
- C++11 std::bind std::function 高階用法C++Function
- 【C++】【原始碼解讀】std::is_same函式原始碼解讀C++原始碼函式
- 透徹理解C++11新特性:右值引用、std::move、std::forwardC++Forward
- (C++11/14/17學習筆記):std::atomic續、std::async與std::thread對比C++筆記thread
- C++11中std::move、std::forward、左右值引用、移動建構函式的測試C++Forward函式
- C++11 執行緒同步介面std::condition_variable和std::future的簡單使用C++執行緒
- C++/C++11中std numeric limits的使用C++MIT
- C++11併發程式設計:多執行緒std::threadC++程式設計執行緒thread
- c++11 執行緒間同步---利用std::condition_variable實現C++執行緒
- 解決 /kaldi-trunk/tools 目錄下make安裝報錯需要支援 ISO C++ 2011 -std=c++11 or -std=gnu++11C++
- std::vector 和 std::list 區別
- std::reserve和std::resize的區別
- `std::packaged_task`、`std::thread` 和 `std::async` 的區別與聯絡Packagethread
- 詭異!std::bind in std::bind 編譯失敗編譯
- 【C++併發實戰】(三) std::future和std::promiseC++Promise
- C++ 標準庫 std::set std::multiset swap()的使用C++
- ODRDMS_GOV_STDGo
- std::count 函式函式
- C++(std::vector)C++
- C++11:一些微小的變化(新的資料型別、template表示式內的空格、nullptr、std::nullptr_t)C++資料型別Null
- 【C++11】c++11實現執行緒池C++執行緒
- std::map initializer list syntax ?
- std::remove_if 介紹REM
- std::tr1::functionFunction
- (不要)使用std::threadthread
- std::function用法學習Function
- std::make_shared
- C++11 tupleC++
- 智慧指標思想實踐(std::unique_ptr, std::shared_ptr)指標
- c++ std::vector 切記C++
- 理解 std::declval 和 decltype
- std::async的使用總結
- C++11新特性C++
- C++ 智慧指標詳解: std::unique_ptr 和 std::shared_ptrC++指標
- std::numeric_limits::max() std::numeric_limits::min()編譯錯誤MIT編譯
- std::string的工具函式函式