Ich möchte mehrere Argumente übergeben, um zwei Objekte innerhalb einer Funktion zu konstruieren, genauso wie std::pair<T1, T2>(std::piecewise_construct, ...)
funktioniert. Sostd :: forward_as_tuple um Argumente an 2 Konstruktoren zu übergeben
Ich schrieb
template <typename Args0..., typename Args1...>
void f(std::tuple<Arg0> args0, std::tuple<Args1> args1) {
Object0 alpha(...);
Object1 beta(...);
...
}
so kann ich
nennenf(std::forward_as_tuple(..., ..., ...), std::forward_as_tuple(..., ...))
Aber ich weiß nicht, wie Object0
und Object1
zu konstruieren. Ich habe den Quellcode meiner Standardbibliothek für std::pair
überprüft und sie scheinen komplizierte interne Funktionen zu verwenden, um die Indizes von args0 und args1 zu erhalten. Hast du eine Idee, wie das geht?
Dank. Leider muss ich mit gcc 4.8.5 kompatibel sein, das von RHEL 7 bereitgestellt wird. Ich denke also, ich muss make_index_sequence in C++ 11 implementieren, was genau das ist, was ich in der Standardbibliothek für std :: pair gefunden habe. – InsideLoop
@InsideLoop Cool, ich habe eine Live-Demo hinzugefügt, die in C++ 11 arbeitet. – TartanLlama
Kühl. Es funktioniert mit gcc 4.8.5 :-) – InsideLoop