C ++编译器推导不正确的模板参数

时间:2017-09-22 23:56:30

标签: c++ c++11

当我传入变量" 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;根据模板折叠规则推导出左值?

0 个答案:

没有答案