1樓:鹹蛋
要是為了編碼方便可以先實現tuple的迭代器然後用巨集封裝下for迴圈比較容易實現
#define _for(i, a, b) for(auto i = a; i != b; i++)
可以進一步為_for 加上變參控制實現類似包含預設值的巨集手機不方便碼字 stackoverflow和知乎上可以搜到
2樓:Star.E
雖然解決的問題不太一樣,不過還是提一下。
C++20有Range-based for statements with initializer哦。
Range-based for loop (since C++11)以後可以這樣寫啦!
for(
std::
size_ti=
0;const
auto&x
:foo
())用起來稍微麻煩了一點點,但更通用。
3樓:暮無井見鈴
粗看起來你的 ipairs 弄出乙個範圍,而其每個元素(也就是結構化繫結所分解的東西)是 tuple ,裡面有 pair 的兩個成員的引用。
然而直接對引用型別加 const 限定是無效的。例如若有 using iref = int&; 則 const iref 仍是 int& 。這就導致了給結構化繫結宣告加 const 後行為未改變。
比較簡單的做法是給 ipairs 的引數加乙個 std::as_const ,而不是給前面加 const 限定。
(此處我不確定正確性)比較複雜的做法是自己另寫乙個封裝引用的仿 tuple 型別(可以復用 tuple ),然後特化一下 std::tuple_element ,用間接方式給引用加 const 。
在C語言中,如何安全地使用void ?
Lvcs 靈活接收資料型別,可以試試使用巨集定義而不用函式 舉個例子 判斷兩個數哪個大 define MAX a,b a b a b 使用巨集定義可以靈活接收各種型別的 a b,而使用函式判斷的話就需要事先設定傳入引數的型別了。 劉燦 傳遞指標同時提供區域長度 不用0來標識字串或區域結束 以typd...
如何評價新的cpu效能天梯中3300x在3500x之上?
Hking 3500x 6c6t,3.6 4.1Ghz3300x 4c8t,3.8 4.3Ghz多核效能或許不相上下,3500x或許小勝。單核效能上,3300x主頻更高,而且3300x是乙個完整的ccx核心,3500x是兩個ccx,之間通過IF匯流排通訊有一定延遲 這也是3300x與3100x同頻下...
如何評價公尺西亞在歌手當打之年歌王之戰中實力演唱《再會的彼端》卻被淘汰?
樂樂吃大餅 我是先知道賽過再回看了公尺西亞和周深的兩段演出。公布結果前公尺西亞單純地像個小孩子,雙手捧臉眼睛一眨一眨地好奇地期待著何老師公布結果,她應該是不知道有劇本的。而周深,上場之前就應該知道的,有種少年勇敢赴死的英勇,碰上新褲子彭磊那二傻子,也是夠諷刺了,確定是搖滾不是癲癇?連續看完公尺西亞的...