当我传入变量" a"我试图弄清楚为什么下面的代码无法编译?作为attach()的左值,但是当我将它传递到右值时编译得很好,例如使用std :: move()。
#include <cstdlib>
class Test
{
public:
Test() {}
~Test() {}
bool func(char c)
{
return true;
}
};
template <typename R, typename C, typename T1, typename... T2>
bool attach(C& obj,
R(C::*func)(T1,T2...), T1&& arg1, T2&&... args)
{
return true;
}
int main(int argc, char** argv)
{
Test test;
char a = 'a';
attach<bool,Test,char>(test, &Test::func, a);
return EXIT_SUCCESS;
}
在这里,为什么不是&#34; a&#34;根据模板折叠规则推导出左值?