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

What is the meaning of (*) in template<typename T> using L = T(*)(T);?

我一直在使用这段代码进行一些测试,我明白它的作用,但我突然想到,我不知道 (*) 在这种情况下应该做什么...

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

我试过删除它,没有它代码运行得很好。我认为这可能与指针有关,但我不确定。我使用代码段来定义传递的 lambda 函数的参数和 return 值

是的,它是一个指针类型。 T(*)(T) 是指向函数 T(T) 的指针,它接受 T 和 returns T.

没有它,即T(T)是函数类型。你说它也有效,因为在很多情况下它可以 decay 指向指向函数的指针 T(*)(T)。例如定义函数参数类型为T(T),则调整为T(*)(T).

An lvalue of function type T can be implicitly converted to a prvalue pointer to that function.