Summary: The value constructor can be nice. But when it matches on Future<Something> it just confuses everybody.
Test Plan:
building and running tests
contbuild
Reviewed By: jsedgwick@fb.com
Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2036455
Tasks:
6925951
Signature: t1:
2036455:
1430423503:
73906f748318c4ebec13f45ad3761f104e2ef888
}
template <class T>
-template <class T2>
+template <class T2,
+ typename std::enable_if<!isFuture<T2>::value, void*>::type>
Future<T>::Future(T2&& val) : core_(nullptr) {
Promise<T> p;
p.setValue(std::forward<T2>(val));
/// Construct a Future from a value (perfect forwarding)
/* implicit */
- template <class T2 = T> Future(T2&& val);
+ template <class T2 = T,
+ typename std::enable_if<!isFuture<T2>::value, void*>::type = nullptr>
+ Future(T2&& val);
template <class T2 = T,
typename std::enable_if<