我一直在閱讀各地關於意識到>>
作爲嵌套模板的結束和>>
作爲移位算...嵌套模板VS移位運算
現在,我已經在我的MSVS2010嘗試過了,沒有問題的發生。
std::map<int, std::pair<int, int>> m;
此代碼的工作正是我想要的(對地圖),但我應該得到關於>>
編譯器是聰明的,這些天一些錯誤?
我一直在閱讀各地關於意識到>>
作爲嵌套模板的結束和>>
作爲移位算...嵌套模板VS移位運算
現在,我已經在我的MSVS2010嘗試過了,沒有問題的發生。
std::map<int, std::pair<int, int>> m;
此代碼的工作正是我想要的(對地圖),但我應該得到關於>>
編譯器是聰明的,這些天一些錯誤?
MSVC++ 2010支持的C++ 0x功能Right Angle Brackets
此代碼的工作正是我想要的(對地圖),但我應該得到的一些錯誤>>
的C++ 0x已經修復了這個。所以,如果你沒有收到MSVS2010的任何錯誤,那麼也難怪,因爲MSVS2010已經實現了一些C++ 0x功能。
此外,即使使用C++ 03,許多編譯器也可以處理這種情況,但Standard(2003)並不要求。
C++0x現在支持沒有錯誤的語法。編譯器已經開始實現大部分這些功能,所以最新的Microsoft C++編譯器支持它並不令人驚訝。
要小心,因爲以前好C++代碼03可以用編譯器支持這一功能打破。
MyArray< MyArray<int, 16 >> 2>, 5 > arrayInst;
這將是修復:
MyArray< MyArray<int, (16 >> 2)>, 5 > arrayInst;
其實,這是不允許的符合C++編譯器03來實現的C++ 0x語義''>>。有一些有效的C++ 03結構可以解決這個問題。 – 2011-04-24 15:07:59
@Charles:有趣。但是我想知道什麼有效的C++ 03結構可以被這個改變破壞,以及C++ 0x如何處理呢? – Nawaz 2011-04-24 15:10:01
@Nawaz:例如在常量表達式中爲非類型模板參數移動表達式。例如。 'tmpl < tmpl<2 >> 1>> instance;'。通常有效的C++ 03在C++ 0x中成爲編譯錯誤。我沒有設法構建任何導致行爲發生沉默變化的情況。 – 2011-04-24 15:14:12