Skip to content
Snippets Groups Projects
Commit fd205fb6 authored by Eelco Dolstra's avatar Eelco Dolstra
Browse files

ref<T>: Add cast operator

parent ad0dc418
No related branches found
No related tags found
No related merge requests found
...@@ -322,8 +322,8 @@ ref<Store> openStore(bool reserveSpace) ...@@ -322,8 +322,8 @@ ref<Store> openStore(bool reserveSpace)
} }
return mode == mDaemon return mode == mDaemon
? make_ref<Store, RemoteStore>() ? (ref<Store>) make_ref<RemoteStore>()
: make_ref<Store, LocalStore>(reserveSpace); : (ref<Store>) make_ref<LocalStore>(reserveSpace);
} }
......
...@@ -134,16 +134,18 @@ public: ...@@ -134,16 +134,18 @@ public:
return p; return p;
} }
template<typename T2>
operator ref<T2> ()
{
return ref<T2>((std::shared_ptr<T2>) p);
}
private: private:
template<typename T2, typename... Args> template<typename T2, typename... Args>
friend ref<T2> friend ref<T2>
make_ref(Args&&... args); make_ref(Args&&... args);
template<typename T2, typename T3, typename... Args>
friend ref<T2>
make_ref(Args&&... args);
}; };
template<typename T, typename... Args> template<typename T, typename... Args>
...@@ -154,13 +156,4 @@ make_ref(Args&&... args) ...@@ -154,13 +156,4 @@ make_ref(Args&&... args)
return ref<T>(p); return ref<T>(p);
} }
template<typename T, typename T2, typename... Args>
inline ref<T>
make_ref(Args&&... args)
{
auto p = std::make_shared<T2>(std::forward<Args>(args)...);
return ref<T>(p);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment