[Bug c++/87921] [7/8/9 Regression] Incorrect error "storage size of [array] isn't known (when it is)
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Nov 12 16:56:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87921
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |jason at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
template <class H>
struct X
{
static inline long x[] = { 1L };
long foo () { return x[0]; }
};
void
bar ()
{
class L {};
X<L> v {};
}
reproduces it too.
I think the problem is that we don't substitute for the inline static data
members their initializers and call finish_static_data_member_decl with it.
The comment says though:
/* In [temp.inst]:
[t]he initialization (and any associated
side-effects) of a static data member does
not occur unless the static data member is
itself used in a way that requires the
definition of the static data member to
exist.
Therefore, we do not substitute into the
initialized for the static data member here. */
and I can't find anything that would say that inline vars are to be treated
differently. Jason?
More information about the Gcc-bugs
mailing list