我有一个包含可变元组的类,但需要自己构造参数堆栈。任何人都可以向我指出如何做到这一点?元组元素没有默认构造函数。
简化代码如下所示:
#include <tuple>
struct base {};
template<class T>
struct elem
{
elem(base*){}
elem() = delete;
};
template<class... ARGS>
struct foo : base
{
foo() : t( /* initialize all elems with this */) {}
std::tuple<elem<ARGS>...> t;
};
int main()
{
foo<int, double> f;
}
答案 0 :(得分:2)
您可以这样做:
template<class... ARGS>
struct foo : base
{
foo() : t(elem<ARGS>(this)...) {}
std::tuple<elem<ARGS>...> t;
};
答案 1 :(得分:1)
#include <tuple>
template <typename... ARGS>
struct foo : base
{
foo() : t(get_this<ARGS>()...) {}
template <typename>
foo* get_this() { return this; }
std::tuple<elem<ARGS>...> t;
};