指向成员函数类型的指针需要一个右值

时间:2014-04-23 03:21:17

标签: c++ c++11 rvalue-reference boost-variant

错误的问题是什么,产生以下代码?

struct foo
{
    void call(void (foo::*ptr)()) &&
    {
        (*this.*ptr)();
    }
};

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

由于成员指针具有rvalue限定符,因此必须告诉编译器*this将被std::move视为右值:

(std::move(*this).*ptr)();