Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename T>
- class Client
- {
- private:
- Client(...) {}
- ~Client() {}
- template <typename U>
- friend class Client<T>& initialize(...);
- };
- template <typename T>
- Client<T> initialize(...)
- {
- Client<T> client = new Client<T>(...);
- }
- template <typename T>
- class Client
- {
- private:
- Client() {} // Note private constructor
- public:
- ~Client() {} // Note public destructor
- // Note friend template function syntax
- template<typename U>
- friend Client<U> initialize();
- };
- template<typename T>
- Client<T> initialize()
- {
- /* ... */
- }
- int main()
- {
- Client<int> client = initialize<int>();
- }
- template <typename U> friend Client<U> initialize(.....);
- template <typename T>
- class Client
- {
- private:
- Client() {}
- ~Client() {}
- template <typename U>
- friend Client<U> *initialize();
- template <typename U>
- friend void destroy( Client<U> * );
- };
- template <typename T>
- Client<T> *initialize()
- {
- return new Client<T>();
- }
- template <typename T>
- void destroy( Client<T> *client )
- {
- delete client;
- }
- int main()
- {
- auto client = initialize<int>();
- destroy( client );
- return 0;
- }
- template <typename T>
- class MyClass {
- template <typename U>
- friend MyClass<U> f();
- };
- // Forward declarations
- template <typename T>
- class MyClass;
- template <typename T>
- MyClass<T> f();
- // Definition of class template
- template <typename T>
- class MyClass {
- friend MyClass<T> f<T>();
- };
- // Definition of friend function
- template <typename T>
- MyClass<T> f() { ... }
- template <typename T>
- class MyClass {
- friend MyClass<T> f() { ... } // define inline
- };
Add Comment
Please, Sign In to add comment