112a9d9c8Sopenharmony_ci// bindgen-flags: --with-derive-hash --with-derive-partialeq --with-derive-eq
212a9d9c8Sopenharmony_citemplate <typename T>
312a9d9c8Sopenharmony_ciclass Foo
412a9d9c8Sopenharmony_ci{
512a9d9c8Sopenharmony_ci  typedef T (FunctionPtr)();
612a9d9c8Sopenharmony_ci};
712a9d9c8Sopenharmony_ci
812a9d9c8Sopenharmony_citemplate<typename T>
912a9d9c8Sopenharmony_ciclass RefPtr {
1012a9d9c8Sopenharmony_ci  template<typename R, typename... Args>
1112a9d9c8Sopenharmony_ci  class Proxy {
1212a9d9c8Sopenharmony_ci    typedef R (T::*member_function)(Args...);
1312a9d9c8Sopenharmony_ci  };
1412a9d9c8Sopenharmony_ci};
1512a9d9c8Sopenharmony_ci
1612a9d9c8Sopenharmony_citemplate<typename T>
1712a9d9c8Sopenharmony_ciusing Returner = T(*)();
18