我很新的Boost融合,也許我的問題沒有任何意義。融合表現爲:「運行時和編譯時算法之間的融合」。我想我在編譯時完成的工作和在運行時完成的融合工作之間會迷失方向。編譯時間與運行時間與boost :: fusion
讓我們的for_each
模板,其實它們是兩個! function和metafunction。 這個元函數看起來像我作爲for_each
函數的特徵類模板,錯了?。
取for_each
函數的例子:
struct increment
{
template<typename T>
void operator()(T& t) const
{
++t;
}
};
vector<int,int> vec(1,2);
for_each(vec, increment());
我明白for_each
環路將在編譯時產生被展開類似的代碼
++at_c<0>(vec);
++at_c<1>(vec);
(顯然at_c<x>
模板也將產生代碼以訪問融合載體部件)
對我來說,兩者的for_each功能和metafun ction是「編譯時間程序」,又錯了?
有人可以解釋我(用一個簡單的例子)boost融合的什麼部分只是編譯時間元程序,什麼是經典的編譯時代碼?
好的,謝謝Raymond,我認爲我的問題主要反映了我對融合的無知。我會縮短它以使其對其他融合新手有用。 – Laurent