gpt4 book ai didi

c++ - lambda 需要捕获 'this' 来调用静态成员函数?

转载 作者:IT老高 更新时间:2023-10-28 13:24:25 27 4
gpt4 key购买 nike

对于以下代码:

struct B
{
void g()
{
[]() { B::f(); }();
}

static void f();
};

g++ 4.6 报错:

test.cpp: In lambda function:
test.cpp:44:21: error: 'this' was not captured for this lambda function

(有趣的是,g++ 4.5 编译代码很好)。

这是 g++ 4.6 中的错误,还是真的需要捕获 'this' 参数才能调用静态成员函数?我不明白为什么会这样,我什至用 B:: 限定了调用。

最佳答案

我同意,它应该编译得很好。对于修复(如果你还不知道的话),只需添加引用捕获,它会在 gcc 4.6 上正常编译

struct B
{
void g()
{
[&]() { B::f(); }();
}

static void f() { std::cout << "Hello World" << std::endl; };
};

关于c++ - lambda 需要捕获 'this' 来调用静态成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940259/

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