getWaitTimeoutHelper(this, dur).value();
}
+template <class T>
+T Future<T>::getVia(DrivableExecutor* e) {
+ while (!isReady()) {
+ e->drive();
+ }
+ return std::move(value());
+}
+
+template <>
+inline void Future<void>::getVia(DrivableExecutor* e) {
+ while (!isReady()) {
+ e->drive();
+ }
+ value();
+}
+
template <class T>
Future<T> Future<T>::within(Duration dur, Timekeeper* tk) {
return within(dur, TimedOut(), tk);
return done;
}
+template <class T>
+Future<T>& Future<T>::waitVia(DrivableExecutor* e) & {
+ while (!isReady()) {
+ e->drive();
+ }
+ return *this;
+}
+
+template <class T>
+Future<T> Future<T>::waitVia(DrivableExecutor* e) && {
+ while (!isReady()) {
+ e->drive();
+ }
+ return std::move(*this);
+}
+
}
// I haven't included a Future<T&> specialization because I don't forsee us