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

时间:2019-04-24 18:00:49

标签: c++ lambda c++14 functor typetraits

中,我有is_invocable用来匹配函数指针,lambda和函子。

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

我尝试过is_function,但这仅适用于函数指针。

1 个答案:

答案 0 :(得分:1)

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

例如,您可以在https://android.googlesource.com/platform/ndk/+/5b3a49bdbd08775d0e6f9727221fe98946f6db44/sources/cxx-stl/llvm-libc++/libcxx/include/type_traits

中找到__invokable的LLVM实现(std::is_invocable将LLVM的STL中的所有逻辑转发到该实现)

(我原本打算将其提取并发布在这里,但对于发布来说似乎太大了。从一个更轻松的角度来看,我发现拼写有所不同-可调用与可调用-有趣。)