C++14 中如何方便地将 tuple 展开成为另一个 class 的 variadic template

2022-07-20 04:02:35 +08:00
 dangyuluo

比如有一个 tuple, std::tuple<int, int, float>, 另一个类接受 variadic template

template <typename... Ts>
class MyClass{};

请问这种情况下如何方便地将int, int, float传入MyClass,以实现MyClass<int, int ,float>呢?

我能想到的办法就是写一个自己的TupleWrapper然后在类里包装一下 MyClass ,这里也可以做到模板。但是这样太麻烦了,请问有没有更简洁的办法呢?

详见: https://godbolt.org/z/zMbPTT8Mz

1837 次点击
所在节点    C++
4 条回复
darklights
2022-07-20 06:04:11 +08:00
不知道你最终想实现什么。
单就给的例子而言,C++11 都可以做的比较简洁。
https://godbolt.org/z/chbefrdos
darklights
2022-07-20 06:33:30 +08:00
再来个 C++17
https://godbolt.org/z/xf5vhqMnx

看来 C++模板还修补得挺多。
然并卵。
dangyuluo
2022-07-20 06:36:59 +08:00
@darklights 我们还停留在 C++14 ,要是能用 17 的 folding expression 就简单多了,我又不想用`make_index_sequence`这种方法,想着有没有类似`std::apply`这种简单的语法
xiaoxuxu
2022-07-21 17:13:10 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867415

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX