3
我想传递多个参数以便在函数内部构造两个对象,与std::pair<T1, T2>(std::piecewise_construct, ...)
工作方式相同。std :: forward_as_tuple将参数传递给2个构造函数
所以我写了
template <typename Args0..., typename Args1...>
void f(std::tuple<Arg0> args0, std::tuple<Args1> args1) {
Object0 alpha(...);
Object1 beta(...);
...
}
所以我可以调用
f(std::forward_as_tuple(..., ..., ...), std::forward_as_tuple(..., ...))
但我不知道如何构建Object0
和Object1
。我检查了我的标准库的源代码std::pair
,它们似乎使用复杂的内部函数来获取args0和args1的索引。你有什么想法如何做到这一点?
感谢。不幸的是,我需要与RHEL 7提供的gcc 4.8.5兼容。所以我猜,我需要在C++ 11中实现make_index_sequence,这正是我在std :: pair的标准库中找到的。 – InsideLoop
@InsideLoop酷,我添加了一个在C++ 11工作的现场演示。 – TartanLlama
很酷。它适用于gcc 4.8.5 :-) – InsideLoop