2012-02-22 46 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

相关问题