【发布时间】:2020-06-25 10:37:23
【问题描述】:
在 JLospinoso (c++ Crash Course) 中,第 10 章关于单元测试。Link to the book page
有这段代码(简体)
struct BrakeCommand {
double time_to_collision_s;
};
template<typename T>
struct AutoBrake {
AutoBrake(const T& publish) : publish{publish} {}
---snips---
private:
const T& publish;
}
叫什么
AutoBrake auto_brake{[](const BrakeCommand&) {}};
1 - 我完全不明白为什么会有这么多 {} [] ?模板一无所有...
2 - C++ 编译器 MSVC 引发此错误
“错误 C2955: 'AutoBrake': 使用类模板需要模板 参数列表”
为什么这里有模板?这个程序怎么编译?
非常感谢,
【问题讨论】:
-
1.
[](const BrakeCommand&) {}是所谓的 lambda 表达式。 2.这段代码需要C++17编译,确保你的编译器足够新,并且在设置中启用了C++17特性。 -
非常感谢帮助像我这样的初学者,它有效;)