【发布时间】:2019-12-07 21:50:23
【问题描述】:
我在 Github 上发现了一个内部非常奇怪的单行函数:
std::unique_ptr<std::remove_pointer<HANDLE>::type, void(*)(HANDLE)> hDevice{h, [](HANDLE handle){CloseHandle(handle);}};
作为一个从未接触过 c++ 的人,我不知道它的作用。
我想,这里有两个嵌套匿名函数以某种方式与 std::remove_pointer 和 std::unique_ptr 调用相关联。我在内部函数中看到一个 WinAPI CloseHandle 调用,并假设我应该从它开始我的分析。我不能说更多。
这里可能有两个嵌套的泛型。
花括号和“大于”符号的使用对我来说也很奇怪。它打破了我所知道的所有典型案例。
请帮助了解这个集团。我不知道如何用谷歌搜索它的部分。
【问题讨论】:
-
这是一个带有自定义删除器的
std::unique_ptr。参考。例如。 :How do I use a custom deleter with a std::unique_ptr member? -
a "bigger than" symbol所以你连模板都不熟悉? -
研究术语:类模板、类型特征、函数指针、lambda表达式。老实说,听起来你可以使用good C++ book
-
我建议从头开始编写代码,而不是在不相关的语言之间进行翻译。即使你成功了,也会应用错误的成语
标签: c++