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

问题描述

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

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

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

解决方法

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

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

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