#pragma once
#include <folly/functional/Invoke.h>
namespace folly {
namespace observer {
template <typename T>
class Observer;
}
namespace observer_detail {
template <typename T>
struct NonSharedPtr { … };
NonSharedPtr<std::shared_ptr<T>>;
template <typename T>
struct NonObserver { … };
NonObserver<observer::Observer<T>>;
template <typename T>
struct UnwrapSharedPtr { … };
UnwrapSharedPtr<std::shared_ptr<T>>;
template <typename T>
struct UnwrapObserver { … };
UnwrapObserver<observer::Observer<T>>;
ResultOf;
ResultOfNoObserverUnwrap;
ResultOfUnwrapSharedPtr;
ResultOfUnwrapObserver;
template <typename T>
struct Unwrap { … };
Unwrap<observer::Observer<T>>;
}
}