https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56671
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-01-26 Ever confirmed|0 |1 --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Generating the array initialization for this constexpr constructor is the problem: constexpr _Base_bitset(unsigned long long __val) noexcept : _M_w{ _WordT(__val) } { } Reduced example from PR 69486: namespace std { typedef decltype(sizeof(0)) size_t; template<size_t _Nw> struct _Base_bitset { typedef unsigned long _WordT; _WordT _M_w[_Nw]; constexpr _Base_bitset() noexcept : _M_w() { } constexpr _Base_bitset(unsigned long long __val) noexcept : _M_w{ _WordT(__val) } { } }; template<size_t _Nb> class bitset : private _Base_bitset<((_Nb) / (8 * 8) + ((_Nb) % (8 * 8) == 0 ? 0 : 1))> { public: constexpr bitset() noexcept { } }; } std::bitset<2147483648> b; int main() {}