rub*_*bik 3 c++ lambda auto c++14
我有以下代码:
enum RelationalOperator { LT, LTE, EQ, GTE, GT };
std::map<RelationalOperator, bool (*)(const Point&, const Point&)> ops = {
{ GTE, [](const Point& a, const Point& b) { return a >= b; } },
{ LTE, [](const Point& a, const Point& b) { return a <= b; } },
{ EQ, [](const Point& a, const Point& b) { return a == b; } },
{ GT, [](const Point& a, const Point& b) { return a > b; } },
{ LT, [](const Point& a, const Point& b) { return a < b; } },
};
Run Code Online (Sandbox Code Playgroud)
此代码位于模板内,Point是模板参数.
我试图取代变量的类型ops有auto,但锵++说:
src/utils.hpp:47:10: error: cannot deduce actual type for variable 'ops' with type 'auto' from initializer list
Run Code Online (Sandbox Code Playgroud)
这是为什么?我认为关键字auto适用于这种情况,其中类型很长且相当明显.
auto不适用于初始化列表.可以使用相同的初始化列表初始化一堆其他类型,例如:
std::map<int, bool (*)(const Point&, const Point&)>
std::multimap<RelationalOperator, bool (*)(const Point&, const Point&)>
std::vector<std::pair<int, bool (*)(const Point&, const Point&)>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |