gpt4 book ai didi

c++ - 获取 boost::hana::partial::operator() 的地址

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:34 32 4
gpt4 key购买 nike

假设我有一个执行某些操作的 lambda:

auto thing = [](int x){ /* Stuff */ };

我想保存值“x”并稍后调用它,所以我这样做:

auto other = boost::hana::partial(thing, 42);

现在,因为我想对此做一些类型删除,所以我想获取 operator() 的地址......所以我尝试这样做:

using type = decltype(other);
void (type::*ptr)(void) = &type::operator();

Clang 提示说,other 对象的功能不足以满足要求:godbolt

看起来 partial 类型正在返回一个引用(到 void?)......为什么这不起作用?

最佳答案

它(operator())有 & const& && 等重载;您的成员函数指针没有通过 const 或 r/l value-ness 限定 *this。所以不匹配。

= 之前添加 &const&&&const&&编译失败的行,它会编译。

这是一个[MCVE]:

struct foo {
void bar()&{}
};

int main(){
auto p = &foo::bar;
void(foo::*p2)() = p; // lacks &
}

关于c++ - 获取 boost::hana::partial::operator() 的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800393/

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