static assert 是在編譯時期的斷言

2021-07-07 05:07:16 字數 837 閱讀 9972

static assertion

static_assert 是在編譯時期的斷言,作用不言而喻的。

語法是這樣:

static_assert ( bool_constexpr , string )
其中:

bool_constexpr: 常量表示式

string: 如果bool_constexpr表示式為false, 這個string就是編譯時候報的錯誤。

看看**:

// run-time assert

assert(ptr != null)

// c++ 11

// compile-time assert

static_assert(sizeof(void *) == 4, 64-bit is not supported.);

constructor delegation

之前我們知道,乙個類的建構函式不可以呼叫這個類的其他建構函式。每個建構函式只能包含類的成員變數和共有函式。

// c++03

class a

void dosomethingelse()

public:

a()

a(int a)

};

但是c++11允許我們這麼幹!

// c++11

class a

public:

a()

a(int a) : a()

};

C 11 靜態斷言static assert

一 assert 在c 中,或中提供了assert巨集 執行期斷言 可以定義ndebug來禁用assert巨集。二 static asser c 11 靜態斷言static assert,編譯期斷言。static assert 常量表示式,提示字串 兩個引數,乙個是斷言表示式,由於是在編譯期間,所以...

C11編譯時斷言static assert

c 11標準新引入的static assert功能可以實現靜態斷言,是乙個非常強大的模板元程式設計工具,配合sfinae特性可以在編譯期發現不符合預期的不合理特化,並且給出自定義的錯誤資訊。1.static assert是 c11 中引入的關鍵字。static assert是 c11 中引入的巨集,...

Magic Number 在程式設計中的使用

magic no,好方法!假設我們有了一大塊緩衝區 以下稱buffer say,1m,這一塊緩衝區將用來滿足很多小的順序到來的記憶體請求,並且,其釋放先後次序和申請次序一致。我們可以考慮採用環形佇列來解決這個問題。為了記錄分配出去的記憶體塊 以下稱buflet 的大小 狀態等資訊,需要對記憶體區進行...