1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 19:01:16 +02:00

ref<T>: Add cast operator

This commit is contained in:
Eelco Dolstra 2016-02-11 15:32:48 +01:00
parent ad0dc41899
commit fd205fb6f8
2 changed files with 8 additions and 15 deletions

View file

@ -134,16 +134,18 @@ public:
return p;
}
template<typename T2>
operator ref<T2> ()
{
return ref<T2>((std::shared_ptr<T2>) p);
}
private:
template<typename T2, typename... Args>
friend ref<T2>
make_ref(Args&&... args);
template<typename T2, typename T3, typename... Args>
friend ref<T2>
make_ref(Args&&... args);
};
template<typename T, typename... Args>
@ -154,13 +156,4 @@ make_ref(Args&&... args)
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);
}
}