溫馨提示×

c++ static_assert對類型檢查

c++
小樊
118
2024-11-25 05:38:32
欄目: 編程語言

static_assert 是 C++11 引入的一個關鍵字,用于在編譯時進行類型檢查。它允許開發者在代碼中定義一個編譯時的斷言,當斷言的條件不滿足時,編譯器會報錯并終止編譯。這有助于在編寫代碼時發現潛在的類型錯誤或其他問題。

使用 static_assert 的基本語法如下:

static_assert(常量表達式, "錯誤信息");

其中,常量表達式 是一個返回布爾值的表達式,如果表達式的結果為 false,則觸發編譯錯誤。錯誤信息 是一個可選的字符串,用于描述導致編譯錯誤的原因。

下面是一個簡單的示例,展示了如何使用 static_assert 進行類型檢查:

#include <iostream>
#include <type_traits>

template <typename T>
void print_type() {
    static_assert(std::is_integral<T>::value || std::is_floating_point<T>::value,
                  "print_type() 只接受整數或浮點類型");

    std::cout << "類型是: " << typeid(T).name() << std::endl;
}

int main() {
    print_type<int>(); // 正確:int 是整數類型
    // print_type<std::string>(); // 錯誤:std::string 不是整數或浮點類型
    return 0;
}

在這個示例中,我們定義了一個模板函數 print_type(),它接受一個類型參數 T。在函數內部,我們使用 static_assert 檢查 T 是否為整數或浮點類型。如果不是,編譯器會報錯并顯示提供的錯誤信息。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女