縱觀標準N3291,我沒有找到tuple
的支持begin()
和end()
的任何參考。但是當我從幾年前看到我的筆記時,我似乎已經記下了,我需要稍後再研究。在這裏,我們是。C++ 0x元組沒有迭代器,對吧?
我在當前的C++ 0x標準中找不到tuple<...>.begin()
或tuple<...>.end()
的任何痕跡,這是正確的嗎?不可能將其迭代器的元組傳遞給一個算法,也不能將一個for
環回它,對吧?
tuple<int,string,double> val;
for(auto a : val) cerr << val; // very wrong!
這當然是無稽之談,因爲auto
應該是什麼?
我需要確認我的筆記包含錯誤,並且沒有辦法爲元組元素獲取這些迭代器。或者也許在標準討論中有一條被遺棄的道路?
注:我知道一個可以使用TMP或可變參數模板實施做參加的所有元素對的一元組,但我的問題實際上是關於迭代器。
爲什麼不用索引從0到':: tuple_size'循環並通過'std :: get '訪問元素? – osgx
@osgx:模板參數必須是編譯時常量! –
檢查此問題及其答案http://stackoverflow.com/q/1198260/196561 – osgx