我如何判断类型是否为函子?

How can I Tell if a Type is a Functor?

I have is_invocable 中匹配函数指针、lambda 和仿函数。

但是,如果我被困在 上怎么办?我有类型特征吗,或者我可以写一个匹配所有这些的类型特征吗?

我试过 is_function 但它只适用于函数指针。

是的,std::is_invocable 是一个不需要编译器支持的库函数。您可以从您选择的 STL 中提取实现。

例如,您可以在此处找到 __invokable 的 LLVM 实现(std::is_invocable 将 LLVM 的 STL 中的所有逻辑转发到该实现):https://android.googlesource.com/platform/ndk/+/5b3a49bdbd08775d0e6f9727221fe98946f6db44/sources/cxx-stl/llvm-libc++/libcxx/include/type_traits

(我正在考虑提取它并在此处 posting,但它对于 post 来说似乎太大了。说得轻松一点,我发现拼写有所不同 - invocable 与 invokable - 有趣。)