完美转发这个指针?

时间:2016-04-19 12:37:13

标签: c++ c++11 perfect-forwarding

我有以下代码:

template<typename T>
class Dispatcher
{
public:
    void operator()(T&& v) {}
};

struct S
{
    Dispatcher<S*> dispatcher;

    void test()
    {
        dispatcher(this);
    }
};

它仅在 VisualStudio 中给出了错误error C2664: 'void Dispatcher<S *>::operator ()(T &&)' : cannot convert argument 1 from 'S *const ' to 'S *&&'。在 gcc clang 中,它可以正常工作。

我搜索了文档,我发现here的唯一内容是:When used according to the following recipe in a function template, forwards the argument to another function with the value category it had when passed to the calling function.

这是否意味着完美转发可以保证仅适用于功能? gcc clang 不符合标准吗?

0 个答案:

没有答案