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>{}), "" );

  }

};

Reply via email to