小编Jos*_*shK的帖子

在 C++17/20 中迭代元组

有谁知道在 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::applystd::invoke吗?

c++ tuples c++17

3
推荐指数
1
解决办法
2773
查看次数

标签 统计

c++ ×1

c++17 ×1

tuples ×1