9
我最近有代碼的問題是這樣的:爲什麼編譯器不能推導自動模板參數,除非我添加const?
constexpr auto lambda = []{};
template<auto& l>
struct Lambda {};
template<auto& l>
void test(Lambda<l>) {}
int main() {
test(Lambda<lambda>{});
}
兩個鐺和GCC告訴它不能推斷l
。
不過,如果我添加常數有:
// ----v
template<const auto& l>
void test(Lambda<l>) {}
然後一切正常鏗鏘。 GCC仍然失敗。這裏發生了什麼事?它能否推導出const
本身?這是一個海灣合作委員會的錯誤,它不會在這兩種情況下推斷l
?