有谁知道在 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} };
}
Run Code Online (Sandbox Code Playgroud)
我们如何遍历元组并Go()使用最新的 17/20 功能调用每个元组的方法?
我知道你可以只拥有一个对象的向量,然后它就可以轻松工作。我的目标是能够在不必使用虚函数的情况下拥有一定的多态性。
这个想法是能够在元组中拥有支持相同方法的其他对象类型。如果该方法存在于每个对象中,那么代码将编译和执行而无需使用基类、虚拟对象、虚表等。
有什么办法可以用std::apply或std::invoke吗?