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的返回類型?只有當你有一個簡單的單線程?