有没有办法把每种类型的std::tuple转换成特定的子类型呢?
struct Foo1
{
struct A{};
struct B{};
};
struct Foo2
{
struct A{};
struct B{};
};
using myTypes = std::tuple<Foo1, Foo2>;
有没有办法把myTypes转换成下面的类型?
std::tuple<Foo1::A, Foo1::B, Foo2::A, Foo2::B>;
类型的顺序并不重要,但最好像上面这样。
2条答案
按热度按时间hk8txs481#
如果A/B名称是固定的,您可以
所以
AB_Types<Foo1, Foo2>
就是std::tuple<Foo1::A, Foo2::A, Foo1::B, Foo2::B>
。具有预期的次序也是可能的:
如果源是元组,只需添加额外的层
nmpmafwu2#
基于
Boost.Mp11
库的替代解决方案: