http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56071
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid Status|UNCONFIRMED |NEW Last reconfirmed| |2013-01-21 Summary|noexcept with template and |friend class template |private ctor fails |cannot access private | |constructor in | |exception-specification Ever Confirmed|0 |1 Known to fail| |4.7.2, 4.8.0 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-01-21 22:59:35 UTC --- Slightly reduced: class B { template <typename T> friend struct A; B() {} }; template <typename T> struct A { A() noexcept(noexcept(B())) { } }; struct C { C() { static_assert( !noexcept(A<int>()), "" ); } }; The same access failure happens if the noexcept operator is replaced with sizeof: class B { template <typename T> friend struct A; B() {} }; template <typename T> struct A { A() noexcept(sizeof(B{})) { } }; struct C { C() { static_assert( sizeof(A<int>{}), "" ); } };