1
我有一個這樣的模板函數:模板函數接受拉姆達問題
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上面的調用是合法的嗎?
這個錯誤沒有說*完全*有什麼問題? –
但不是函數調用是否正確? – KaiserJohaan
不,因爲你提供了一個左值,它不能綁定到右值引用。 –