【发布时间】:2014-04-23 03:21:16
【问题描述】:
产生以下代码的错误是怎么回事?
struct foo
{
void call(void (foo::*ptr)()) &&
{
(*this.*ptr)();
}
};
如何解决这个错误?
【问题讨论】:
-
您不认为将完美的关键字
sizeof和alignof包含在模板中有点过头了吗? -
另外,这是一大堆代码。认为你可以simplify it a bit?
-
@zneak 我需要元函数,而不是裸关键字。
-
@zneak 这是最小的实用示例,其中包含有趣的错误。每个函数和元函数最多包含两行代码(typedef 和 static_asserts 除外)。
-
我认为this是最小的可行示例,解决方案是使用
(std::move(*this).*ptr)。
标签: c++ c++11 rvalue-reference boost-variant