static_assert
是 C++11 引入的一個關鍵字,用于在編譯時進行斷言檢查
下面是一個使用 static_assert
的模板示例:
#include <iostream>
#include <type_traits>
// 一個簡單的模板函數,用于檢查類型是否為整數
template <typename T>
void check_is_integer() {
// 使用 static_assert 檢查類型 T 是否為整數類型
static_assert(std::is_integral<T>::value, "T must be an integral type");
std::cout << "Type T is an integral type." << std::endl;
}
int main() {
// 使用整數類型調用 check_is_integer 函數
check_is_integer<int>();
// 使用浮點類型調用 check_is_integer 函數,將導致編譯時錯誤
// check_is_integer<double>();
return 0;
}
在這個示例中,我們定義了一個名為 check_is_integer
的模板函數,該函數使用 static_assert
檢查類型參數 T
是否為整數類型。如果是整數類型,編譯器將正常編譯并輸出 “Type T is an integral type.”。但是,如果我們嘗試使用浮點類型(如 double
)調用該函數,編譯器將在編譯時報錯,提示 “T must be an integral type”。