我想将相同类型的参数列表转换为 C 数组。这是我发现解决问题的最佳方法:
template <typename T > class _Arr {
template <size_t N> struct Rep_base {
T m_el[N];
operator T * () { return m_el; }
};
public:
template <size_t N> struct Rep;
template <> struct Rep<1> : public Rep_base<1> {
Rep(const T & a) { m_el[0] = a; };
};
template <> struct Rep<2> : public Rep_base<2> {
Rep(const T & a, const T & b) { m_el[0] = a; m_el[1] = b;};
};
...
};
所以给定一个函数:
void f(int x[5]);
如果可以打电话f(_Arr<int>::Rep<5>(1, 2, 3, 4, 5)).
这太可怕了。有没有人更好的解决方案?