有没有人知道在C++17/20中遍历元组的好方法?假设我们有这样一段代码:
class Test
{
public:
Test( int x ) : x_(x) {};
void Go() const { std::cout << "Hi!" << x_ << "\n" ; }
int x_;
};
int main()
{
std::tuple tplb{ Test{1} , Test{2} , Test{3} };
}
我们如何迭代遍历元组,并使用最新的17/20特性在每个元素上调用
Go()
方法?我知道您可以只需具有对象向量,然后就可以轻松工作。我希望通过这种方式能够实现某种多态性,而无需使用虚函数。
这个想法是能够在元组中拥有其他支持相同方法的对象类型。如果每个对象都存在该方法,则代码将会编译并执行,而不必使用基类、虚函数、vtable等。
也许可以使用
std::apply
或std::invoke
来实现吗?