https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68068

--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
markus@x4 Release % cat WebDOMActivityLogger.ii
template <typename T> struct A {
  static void deletePtr(T *p1) { delete p1; }
};
template <typename> class PassOwnPtr;
template <typename T> PassOwnPtr<T> adoptPtr(T *);
template <typename T> class PassOwnPtr {
public:
  template <typename U> PassOwnPtr(U);
  ~PassOwnPtr() { A<T>::deletePtr(m_ptr); }
  T *m_ptr;
};

class WebDOMActivityLogger {
public:
  virtual ~WebDOMActivityLogger() {}
};
class V8DOMActivityLogger {
public:
  void operator delete(void *);
  virtual ~V8DOMActivityLogger() {}
  static void setActivityLogger(int, PassOwnPtr<V8DOMActivityLogger>);
};

WebDOMActivityLogger *a;
int b;
void setDOMActivityLogger() {
  V8DOMActivityLogger::setActivityLogger(b, adoptPtr(a));
}

Reply via email to