我一直在使用此代码段进行一些测试,我了解它的作用,但是它只是发生在我的头上,我不知道在这种情况下(*)
应该做什么……
template<typename T>
using L = T(*)(T);
我尝试将其删除,如果没有它,代码可以正常运行。我认为这可能与指针有关,但我不确定。我使用代码段定义了传递的lambda函数的参数和返回值
答案 0 :(得分:5)
是的,它是指针类型。 T(*)(T)
是指向函数T(T)
的指针,该函数接受T
并返回T
。
没有它,即T(T)
是一种函数类型。您说它也是有效的,因为在许多情况下它可以decay指向功能为T(*)(T)
的指针。例如,如果您将T(T)
定义为函数参数类型,则将其调整为T(*)(T)
。
函数类型T的lvalue可以隐式转换为prvalue pointer to that function。