我如何判断类型是否为函子?
How can I Tell if a Type is a Functor?
在 c++17 I have is_invocable
中匹配函数指针、lambda 和仿函数。
但是,如果我被困在 c++14 上怎么办?我有类型特征吗,或者我可以写一个匹配所有这些的类型特征吗?
我试过 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 - 有趣。)
在 c++17 I have is_invocable
中匹配函数指针、lambda 和仿函数。
但是,如果我被困在 c++14 上怎么办?我有类型特征吗,或者我可以写一个匹配所有这些的类型特征吗?
我试过 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 - 有趣。)