Skip to content
Snippets Groups Projects
Commit 78fca0b7 authored by Danilo Piparo's avatar Danilo Piparo
Browse files

[DF][ROOT-9785] RResultPtr<Type_t> can hold results of type IsConvertibleToType_t

parent 3b58538e
No related branches found
No related tags found
No related merge requests found
......@@ -74,6 +74,9 @@ class RResultPtr {
using SPT_t = std::shared_ptr<T>;
// friend declarations
template <typename T1>
friend class RResultPtr;
template <typename T1>
friend RResultPtr<T1> RDFDetail::MakeResultPtr(const std::shared_ptr<T1> &, ::ROOT::Detail::RDF::RLoopManager &,
std::shared_ptr<RDFInternal::RActionBase>);
......@@ -145,6 +148,15 @@ public:
RResultPtr &operator=(const RResultPtr &) = default;
RResultPtr &operator=(RResultPtr &&) = default;
explicit operator bool() const { return bool(fObjPtr); }
template<typename TO, typename std::enable_if<std::is_convertible<T, TO>::value, int>::type = 0 >
operator RResultPtr<TO>() const
{
RResultPtr<TO> rp;
rp.fLoopManager = fLoopManager;
rp.fObjPtr = fObjPtr;
rp.fActionPtr = fActionPtr;
return rp;
}
/// Get a const reference to the encapsulated object.
/// Triggers event loop and execution of all actions booked in the associated RLoopManager.
......
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