同じ型のパラメーターのリストを 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)).
恐ろしいです。誰かがより良い解決策を持っていますか?