如何解决成员函数指针作为没有 `std::mem_fn` 的普通函数指针
我想要这样的东西:
struct Foo {
template <typename T>
void operator()(T i) const { /* ... */
}
template <typename T>
auto To() const { // Doesn't work!
return this->*static_cast<void (Foo::*)(int) const>(&Foo::operator());
}
};
基本上,我想从成员函数指针中获取一个函子。如果我使用静态函数代替 operator()
(去掉所有 this->*
和 Foo::
部分),上面的代码会起作用。如果我只返回成员函数指针 auto ptr = static_cast<void (Foo::*)(int) const>(&Foo::operator())
,我可以使用它,例如,通过提供一个 Foo*
指针 foo
作为 foo->*ptr(0);
:这激发了 this->*
上面的代码。 有没有不借助 lambdas 实现这一目标的好方法?我只想返回一个函数指针,该函数指针“嵌入”了它来自的特定 Foo
实例的信息已创建。
P.S.:我不想要使用 lambda 的解决方案,因为我只对没有它们的解决方案感到好奇。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。