什么是C++ 11中的lambda表达式?我什么时候用?他们解决了哪些问题在引入之前是不可能的?
一些示例和用例将是有用的.
这里的第一行到底是做什么的?我无法理解作业右侧代码的语法 - 具体来说,[]()和 尾随(). 这看起来像是某种无名的内联函数调用?我以前从未见过这个。
HBRUSH hBrBlack = []() { return CreateSolidBrush(COLOR_BLACK); }();
Run Code Online (Sandbox Code Playgroud)
对于上下文,这是使用上面句柄的地方(问题是关于上面的代码):
HBRUSH MyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_LISTBOX)
{
int id(pWnd->GetDlgCtrlID());
if (id == ID_LST_MTRS)
{
pDC->SetTextColor(COLOR_WHITE);
pDC->SetBkColor(COLOR_BLACK);
return hBrBlack;
}
}
// All the rest
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
Run Code Online (Sandbox Code Playgroud)