斷言就是將一個返回值總是需要為真的判別式放在語句中,來排除在設計的邏輯上不應該出現的情況。C++11標準中引入了靜態斷言:static_assert
在C++標準中,<cassert>
或assert.h
為我們提供了assert
宏,但是這個宏只有在運行時才進行斷言,這有很多的限制,因為有時候,程序的某些路徑我們可能執行不到,所以最好能夠在編譯的時候就產生斷言。
C++11標準中就引入了靜態斷言來解決這個問題。
靜態斷言static_assert
使用起來非常簡單,它接受兩個參數
1、斷言表達式,就是一個需要為正的表達式。
2、警告信息,用來在產生斷言的時候提示信息。
such as:
#include<cstring>
using namespace std;template <typename T,typename U> int bit_copy(T &a,U &b){static_assert(sizeof(a)==sizeof(b),"參數的長度不一樣,可能出現越界!");memcpy(&a,&b,sizeof(b));
}
int main(){int a;long b=0x1234567;bit_copy(a,b);
}