私は最近、このようなコードに問題がありました。なぜconstを追加しない限り、コンパイラは自動テンプレートパラメータを推測できませんか?
constexpr auto lambda = []{};
template<auto& l>
struct Lambda {};
template<auto& l>
void test(Lambda<l>) {}
int main() {
test(Lambda<lambda>{});
}
両打ち鳴らすをし、GCCは、それがl
を推測することができないことを伝えます。しかし
、私はそこのconstを追加した場合:
// ----v
template<const auto& l>
void test(Lambda<l>) {}
を次にすべてが打ち鳴らすで動作します。 GCCはまだ失敗します。ここで何が起こっていますか? const
自体を推測することはできますか?どちらの場合でもl
を推測しないためにこれはGCCバグですか?