【发布时间】:2014-08-05 13:07:08
【问题描述】:
我有一个这样的模板函数:
template<class RenderableFunc>
void DrawModels(const RenderQueue& renderQueue, RenderableFunc&& preDrawFunc)
{
// .......
}
这样称呼它:
auto preDrawRenderable = [this](const Renderable& renderable)
{
// ...........
};
DrawModels<decltype(preDrawRenderable)>(renderQueue, preDrawRenderable);
然而,当使用 VS2013 编译时,我得到了这个:
error C2664:
with
[
RenderableFunc=JonsEngine::OpenGLRenderer::GeometryStage::<lambda_411ef98538bba0cf82404b7a6f008e46>
]
You cannot bind an lvalue to an rvalue reference
这是为什么? Afaik 上面的调用是合法的,不是吗?
【问题讨论】:
-
错误不是说确切出了什么问题吗?
-
但是函数调用不正确吗?
-
不,因为你提供了一个左值,它不能绑定到右值引用。
标签: c++ c++11 lambda visual-studio-2013