这种奇怪的 C++ 语法有啥作用? [复制]

Posted

技术标签:

【中文标题】这种奇怪的 C++ 语法有啥作用? [复制]【英文标题】:What does this strange C++ syntax do? [duplicate]这种奇怪的 C++ 语法有什么作用? [复制] 【发布时间】:2021-01-12 08:01:43 【问题描述】:

据我了解,有 3 个参数被传递给 m.def()。我不明白传递的第二个参数的语法,即 [] (Observable...) 这是什么意思?

m.def(
  "DumpHistogramFile",
  [](Observable<NetBase>::Observer* ob) 
    HistogramNetObserver* hist_ob =
        dynamic_cast_if_rtti<HistogramNetObserver*>(ob);
    hist_ob->DumpHistogramFile();
  ,
  pybind11::arg("ob"));

我在pytorch source code 中找到了这个语法

【问题讨论】:

***.com/questions/7627098/… 【参考方案1】:

第二个参数是一个函数,它接受一个指向Observer 的指针并且不返回任何内容。执行时,它调用DumpHistogramFile。这称为lambda expression。

【讨论】:

以上是关于这种奇怪的 C++ 语法有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

除了语法,普通函数和箭头函数有啥区别吗? [复制]

C++ Visual Studio 函数语法高亮

三元运算符;这种语法有啥问题?

逗号分隔的连接和MySQL中的语法连接有啥区别? [复制]

Alamofire:这种语法有啥问题? “通话中的额外参数”

C++基本语法