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
?