返回值语法和模板不起作用

Pau*_*aul 1 c++ c++11

为什么这段代码失败了

错误C2893:无法专门化函数模板''unknown-type'makeAndProcessObject(const Builder&)'

我正在使用MSVC2012

class BBuilder
{
public:
    int makeObject()
    {
        return 22;
    }
};

template <typename Builder>
auto
makeAndProcessObject (const Builder& builder) -> decltype( builder.makeObject() )
{
    auto val = builder.makeObject();
    // do stuff with val
    return val;
}

int main()
{
    BBuilder myobj;
    auto retval = makeAndProcessObject(myobj);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(实例)

For*_*veR 8

你的函数makeObject应该是const,因为你试图调用这个函数constant object,然后一切正常.例