我有一些功能,執行復雜的圖紙。 [僞代碼]變量模板循環,非遞歸
template<typename fields...> // field names of Brush class
void someFunction(){
for(very large loop){
Brush brush = getBrush();
int x;
foreach(field : fields){ // <--- this somehow should be replaced
x = brush.*field;
brush.update(x);
}
}
}
[清單1]
我把它叫做:
someFunction<&Brush::xPos1, &Brush::xPos2, &Brush::xPos3, &Brush::xPos4>()
而且我想編譯器生成這樣的事情:
void someFunction(){
for(very large loop){
Brush brush = getBrush();
int x;
x = brush.xPos1;
brush.update(x);
x = brush.xPos2;
brush.update(x);
x = brush.xPos3;
brush.update(x);
x = brush.xPos4;
brush.update(x);
}
}
[上市2 ]
I mea ñ,我想擺脫那個foreach(領域:領域)。
我發現這個可變模板循環實現,但它是遞歸的。出於性能resons這甚至比foreach循環最差
int a;
template <class T>
void print(const T msg)
{
a = msg;
}
// And this is the recursive case:
template <class A, class... B>
void print(A head, B... tail)
{
a = head;
print(head);
print(tail...);
}
[上市3]
所以,問題是....是有可能可能才達到的結果在[清單2]?如果是,比如何?
'fields'可變參數組是一組類型,你傳遞指針 – Manu343726
圍棋,瞭解多態性而不是他們不dessigned一種方式使用功能(根本沒有意義)。 – Manu343726
我希望編譯器展開一個4迭代循環。 – jrok