2
考虑两个lambda函数在下面的VC++ 10.0代码:的C++ 0x拉姆达返回值类型推理规则
template <typename T>
void eq(uint fieldno, T value) {
table* index_table = db.get_index_table(fieldno);
if (index_table == nullptr) return;
std::set<uint> recs;
index_table->scan_index<T>(value, [&](uint recno, T n)->bool {
if (n != value) return false;
recs.insert(recno);
return true;
});
add_scalar_hits(fieldno, recs).is_hit =
[=](tools::wsdb::field_instance_t& inst) {
return boost::get<T>(inst) == value;
};
}
在第一lambda函数,我被迫使用->bool
返回类型规格而在第二个lambda中,编译器非常乐意推断返回类型。
我的问题是:什么时候编译器可以推断lambda的返回类型?只有当你有一个简单的单线程?