【发布时间】:2022-01-20 02:54:53
【问题描述】:
我有以下 C++20 结构,使用如下所示:
struct Base {
template <typename C>
void wait_for(C& c, auto member) { (c.*member)(); }
};
struct Power : public Base {
void wait_for(auto member) { Base::wait_for(*this, member); }
bool isReady();
};
// called by
Power pow;
pow.wait_for(&Power::isReady);
这将在一个库中,因此我想简化调用以及在每个派生类中实现 wait_for 的需要。
一种简化方法是消除调用中的Power::。有没有办法确定wait_for的定义中的类类型?例如,调用:
pow.wait_for(&isReady);
既然这是Power 的成员,有没有办法隐含地知道这将是该类的成员?
[好吧,怀疑没有,但值得一问,因为 C++20 有很多角落和缝隙。]
【问题讨论】:
-
"一种简化方法是去掉调用中的
Power::" 你能举出具体的例子吗? -
如果您指的是
&Power::isReady,这是创建指向成员的唯一方法。没有魔法可以从&isReady推断出在哪里寻找它。