http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56071



--- Comment #2 from Stephen <steveire at gmail dot com> 2013-01-22 01:44:19 UTC 
---

Interestingly, add variadic templates to the mix and it compiles:





class B

{

  template <typename T> friend struct A;

private:

    B(int, char) {}

    ~B() {}

};



template <typename T>

struct A

{

    T t;

    template<typename... Args>

    A(Args&&... args) noexcept(noexcept(T(std::forward<Args>(args)...)))

      : t(std::forward<Args>(args)...)

    {}

};



struct C {

  A<B> delegate;



  template<typename... Args>

  C(Args&&... args)

      noexcept(noexcept(A<B>(std::forward<Args>(args)...)))

      : delegate(std::forward<Args>(args)...)

    { }

};

Reply via email to