gpt4 book ai didi

c++ - 何时需要 c++17 std::apply/invoke 进行编程?

转载 作者:行者123 更新时间:2023-12-02 01:31:35 31 4
gpt4 key购买 nike

只要 c++ 是面向对象的编程语言,我不确定 std::applystd::invoke 是否是必要的实用程序,它可以转换:

Object.Function(Args...)

进入:

std::invoke(Object, Function, Args)

看起来像 C 风格的函数调用。所以我的问题是,这种场景什么时候对于日常编程来说是必要的/方便的?或者,是否存在使用 apply/invoke 使事情变得更简单的情况?

您能帮忙举一个好的例子吗?非常感谢!

最佳答案

std::invoke启用所有 Callable统一调用的对象,其中包含指向成员函数的指针和指向无法通过诸如f(args...)之类的常规函数​​调用形式调用的成员变量的指针 p>

struct S {
void f(int i);
int x;
};

int main() {
auto mem_vptr = &S::x;
auto mem_fptr = &S::f;
S s;
std::invoke(mem_vptr, s); // invoke like s.*mem_vptr;
std::invoke(mem_fptr, s, 0); // invoke like (s.*mem_fptr)(0);
}

关于c++ - 何时需要 c++17 std::apply/invoke 进行编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73191053/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com