#pragma once
namespace folly {
template <class T>
size_t SharedPromise<T>::size() const { … }
template <class T>
SemiFuture<T> SharedPromise<T>::getSemiFuture() const { … }
template <class T>
Future<T> SharedPromise<T>::getFuture() const { … }
template <class T>
template <class E>
typename std::enable_if<std::is_base_of<std::exception, E>::value>::type
SharedPromise<T>::setException(E const& e) { … }
template <class T>
void SharedPromise<T>::setException(exception_wrapper ew) { … }
template <class T>
void SharedPromise<T>::setInterruptHandler(
std::function<void(exception_wrapper const&)> fn) { … }
template <class T>
template <class M>
void SharedPromise<T>::setValue(M&& v) { … }
template <class T>
template <class F>
void SharedPromise<T>::setWith(F&& func) { … }
template <class T>
void SharedPromise<T>::setTry(Try<T>&& t) { … }
template <class T>
bool SharedPromise<T>::isFulfilled() const { … }
#if FOLLY_USE_EXTERN_FUTURE_UNIT
extern template class SharedPromise<Unit>;
#endif
}