我有两个元组std::tuple<F1, F2, ..., FN>,std::tuple<G1, G2, ..., GN>(或std::tuple<G1>aka G1).有没有什么办法一般加入这些元组成std::tuple<F1, F2, ..., FN, G1, G2, ..., GN>,如果任何类型的F1,F2,..., ,,FN ,...,没有一个默认的构造函数,但移动/可插拔?G1G2GN
Mar*_*cia 21
您可以使用 std::tuple_cat
std::tuple<foo, bar, baz> buzz;
std::tuple<moo, meow, arf> bark;
auto my_cat_tuple = std::tuple_cat(buzz, std::move(bark)); // copy elements of buzz,
// move elements of bark
Run Code Online (Sandbox Code Playgroud)
如果元组的元素类型是可移动的或可复制的,则上述操作将起作用.并且它不要求它们是默认的可构造的,除非你正在做类似的事情
decltype(std::tuple_cat(buzz, bark)) my_uncatted_yet_tuple; // This will attempt to default construct the tuple elements
my_uncatted_yet_tuple = std::tuple_cat(buzz, std::move(bark));
Run Code Online (Sandbox Code Playgroud)