C 11 理解 十三 之 角括號

2021-06-18 01:23:06 字數 527 閱讀 7079

標準 c++ 的剖析器一律將 ">>" 視為右移運算子。 但在樣板定義式中,絕大多數的場合其實都代表兩個連續右角括號。 為了避免剖析器誤判,撰碼時不能把右角括號連著寫。

c++11 變更了剖析器的解讀規則;當遇到連續的右角括號時,優先解析右角括號為樣板引數的退出符號。 如果解讀過程中出現普通括號("(" 與 ")"),這條規則產生變化:

template

<

bool btest> sometype;

std::

vector

1>

2>> x1;

// 解讀為 std::vector of "sometype2>",

// 非法的表示式, 整數 1 被轉換為 bool 型別 true

std::

vector

>2)

>> x1;

// 解讀為 std::vector of "sometype",

// 合法的 c++11 表示式, (1>2) 被轉換為 bool 型別 false

C 11 理解 二 之 範圍限定

boost c 定義了許多 範圍 range 的概念。範圍表現有如受控制的序列 list 持有容器中的兩點。有序容器是範圍概念的超集 superset 有序容器中的兩個迭代器 iterator 也能定義乙個範圍。這些概念以及操作的演算法,將被併入 c 11 標準程式庫。不過 c 11 將會以語言層次...

C 11特性 《深入理解C 11 讀書筆記

新增關鍵字 struct alignas 32 colorvector 沒有alignas關鍵字的話,對齊到8位,加上的話,對齊到32位,能提公升效率。對齊的資料在讀寫上會有效能上的優勢。比如頻繁使用的資料如果與處理器的快取記憶體器大小對齊,有可能提高快取的效能。而資料不對齊可能造成一些不良的後果,...

C 11 大括號和小括號的使用

c 11之前主要有以下幾種初始化方式 小括號初始化 string str hello 等號初始化 string str hello pod物件與pod陣列列表初始化 struct studnet studnet s 純資料 plain of data,pod 型別物件 studnet sarr po...