https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118249
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Resolution|FIXED |---
Status|RESOLVED |NEW
Last reconfirmed| |2025-04-07
--- Comment #5 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Reopening as this is not fully fixed as Barry pointed out in PR117849#c12:
template <class T, int N>
struct Array {
constexpr int size() const { return N; }
};
struct A {
Array<int, 4> a;
void f() {
static_assert(a.size() == 4); // ok
}
};
struct B {
Array<int, 4>* p;
void f() {
static_assert(p->size() == 4); // error (expected)
}
};
struct C {
Array<int, 4>& r;
void f() {
static_assert(r.size() == 4); // error (unexpected?)
}
};
struct D {
Array<int, 4>& r;
void f() {
Array<int, 4>& local = r;
static_assert(local.size() == 4); // error (unexpected?)
}
};