<分区>
在c++17我有 is_invocable
匹配函数指针、lambda 和仿函数。
但是如果我被困在 c++14 上怎么办? ?我有类型特征吗,或者我可以写一个匹配所有这些的类型特征吗?
我试过了 is_function
但这只适用于函数指针。
<分区>
在c++17我有 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
(我正在考虑将其提取出来并张贴在这里,但它似乎对于一个帖子来说太大了。在一个更轻松的笔记中,我发现拼写上的差异 - invocable 与 invokable - 有趣。)
关于c++ - 我如何判断类型是否为仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836024/