2012-02-22 49 views
0

我試圖建立矩陣/矢量模板類C++宏,擴大n爲進1,2,3,...,N

我想擴展宏成類似以下

#define ELEMENTS(M, N) expands into 

m00, m01, m02, ... , m0N, 
m10, m11, m12, ... , m1N, 
... 
... 
... 
mm0, mN1, mN2, ... , mMN 

這可能嗎?

+1

使用數組更簡單,效率更高。 – AraK 2012-02-22 14:42:23

+0

@AraK如果我正確理解他,他想把它擴展到一個模板參數列表。或者我錯了? – pmr 2012-02-22 14:43:10

+0

@AraK它也很難使用=)我想結合{結構{T ELEMENTS(M,N); v [N * M];} – aCuria 2012-02-22 14:55:17

回答

7

你想要的是BOOST_PP_ENUM_PARAMS

BOOST_PP_ENUM_PARAMS本身只是一個圍繞BOOST_PP_REPEAT的包裝。查看implementation顯示它很麻煩,也取決於一些棘手的標題,如auto_rec.hpp。實施這樣的事情可能會更麻煩,然後按照您的想法進行手動操作。所以,如果你不想使用Boost,我寧願不這樣做。

+0

Er是否存在使用之外的解決方案boost?+1 – aCuria 2012-02-22 14:56:02

+0

@aCuria我試圖解釋,爲什麼我認爲這不是一個好主意,但給了你一些文件來看看,如果你接近這一點。只提取Boost.Preprocessor的一部分應該是也是可行的。 – pmr 2012-02-22 16:00:47

相關問題