Should lambda decay to function pointer in templated code?

痴心易碎 提交于 2019-12-05 03:56:51

I can think of no reason that it would be specifically disallowed. I'm guessing that it's just a temporary limitation of g++.

I also tried a few other things:

template <class T>
void foo(void (*f)(void)) {}

foo<int>([]{});

That works.

typedef void (*fun)(void);

template <class T>
fun foo() { return []{}; } // error: Cannot convert.

foo<int>()();

That doesn't (but does if foo is not parameterized).

Note: I only tested in g++ 4.5.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!