使用L = T(*)(T);在template <typename T>中的(*)是什么意思?

时间:2020-08-11 08:13:33

标签: c++ function c++11 templates function-pointers

我一直在使用此代码段进行一些测试,我了解它的作用,但是它只是发生在我的头上,我不知道在这种情况下(*)应该做什么……

template<typename T>
using L  = T(*)(T);

我尝试将其删除,如果没有它,代码可以正常运行。我认为这可能与指针有关,但我不确定。我使用代码段定义了传递的lambda函数的参数和返回值

1 个答案:

答案 0 :(得分:5)

是的,它是指针类型。 T(*)(T)是指向函数T(T)的指针,该函数接受T并返回T

没有它,即T(T)是一种函数类型。您说它也是有效的,因为在许多情况下它可以decay指向功能为T(*)(T)的指针。例如,如果您将T(T)定义为函数参数类型,则将其调整为T(*)(T)

函数类型T的lvalue可以隐式转换为prvalue pointer to that function