@@ -48,20 +48,16 @@ using future_result_t = typename future_result<T>::type;
4848
4949struct ValueTag {};
5050
51- template <typename , typename T, template <typename > class >
52- class BaseFuture ;
53-
54- template <typename Self, typename T>
55- class BaseFuture <Self, T, std::future> {
56- using Impl = std::future<T>;
51+ template <typename Self, typename T, template <typename > class FutureImpl = std::future>
52+ class BaseFuture {
5753
5854 public:
5955 Future<T, std::shared_future> share () {
6056 if (T* value = std::get_if<T>(&self ())) {
6157 return {ValueTag{}, std::move (*value)};
6258 }
6359
64- return std::get<Impl >(self ()).share ();
60+ return std::get<FutureImpl<T> >(self ()).share ();
6561 }
6662
6763 protected:
@@ -70,7 +66,7 @@ class BaseFuture<Self, T, std::future> {
7066 return std::move (*value);
7167 }
7268
73- return std::get<Impl >(self ()).get ();
69+ return std::get<FutureImpl<T> >(self ()).get ();
7470 }
7571
7672 template <class Rep , class Period >
@@ -79,7 +75,7 @@ class BaseFuture<Self, T, std::future> {
7975 return std::future_status::ready;
8076 }
8177
82- return std::get<Impl >(self ()).wait_for (timeout_duration);
78+ return std::get<FutureImpl<T> >(self ()).wait_for (timeout_duration);
8379 }
8480
8581 private:
0 commit comments