使用 C++11 我有类似的东西
#include <boost/mpl/vector_c.hpp>
#include <boost/mpl/size.hpp>
#include <boost/array.hpp>
#include <iostream>
namespace mpl = boost::mpl;
template<std::size_t ... Args>
struct Test
{
typedef mpl::vector_c<std::size_t, Args ...> values_type;
static const boost::array<std::size_t, sizeof...(Args)> values;
};
int main (int argc, char** argv)
{
Test<3,2,5,6,7> test;
return 0;
}
我想用 mpl::vector_c 中的“包含”值初始化 boost::array 内容。此初始化应在编译时执行。我在 SO 上看到了一些使用预处理器的解决方案,但我不知道如何将它们应用于可变参数模板案例。
请注意,在上面的示例代码中,mpl::vector_c 的元素与 Test 的模板参数相同。在实际代码中并非如此,而是values_type
具有长度 == 模板参数的数量,但实际值来自于 mpl 算法序列的应用。因此,不要假设论点是相同的。
希望问题清楚,谢谢!