mirror of
https://github.com/clearlinux/folly.git
synced 2026-09-01 02:34:43 +00:00
Future<Unit>::Future()
Summary: Allow `makeFuture()`-like default ctor for `Future<Unit>` Test Plan: new unit test Reviewed By: jsedgwick@fb.com Subscribers: trunkagent, exa, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2029677 Signature: t1:2029677:1430417794:5ec7fca839294316957803229f4783f2ee875027
This commit is contained in:
committed by
Praveen Kumar Ramakrishnan
parent
5623085aab
commit
db2eae0e1d
@@ -51,11 +51,13 @@ Future<T>::Future(T2&& val) : core_(nullptr) {
|
||||
*this = p.getFuture();
|
||||
}
|
||||
|
||||
template <>
|
||||
template <class F,
|
||||
typename std::enable_if<std::is_void<F>::value, int>::type>
|
||||
Future<void>::Future() : core_(nullptr) {
|
||||
Promise<void> p;
|
||||
template <class T>
|
||||
template <class T2,
|
||||
typename std::enable_if<
|
||||
folly::is_void_or_unit<T2>::value,
|
||||
int>::type>
|
||||
Future<T>::Future() : core_(nullptr) {
|
||||
Promise<T> p;
|
||||
p.setValue();
|
||||
*this = p.getFuture();
|
||||
}
|
||||
|
||||
@@ -58,8 +58,10 @@ class Future {
|
||||
/* implicit */
|
||||
template <class T2 = T> Future(T2&& val);
|
||||
|
||||
template <class F = T,
|
||||
typename std::enable_if<std::is_void<F>::value, int>::type = 0>
|
||||
template <class T2 = T,
|
||||
typename std::enable_if<
|
||||
folly::is_void_or_unit<T2>::value,
|
||||
int>::type = 0>
|
||||
Future();
|
||||
|
||||
~Future();
|
||||
|
||||
@@ -18,4 +18,11 @@ namespace folly {
|
||||
|
||||
struct Unit {};
|
||||
|
||||
template <class T>
|
||||
struct is_void_or_unit : public std::conditional<
|
||||
std::is_void<T>::value || std::is_same<Unit, T>::value,
|
||||
std::true_type,
|
||||
std::false_type>::type
|
||||
{};
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright 2015 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <folly/futures/Future.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
using namespace folly;
|
||||
|
||||
TEST(Unit, FutureDefaultCtor) {
|
||||
Future<Unit>();
|
||||
}
|
||||
|
||||
TEST(Unit, voidOrUnit) {
|
||||
EXPECT_TRUE(is_void_or_unit<void>::value);
|
||||
EXPECT_TRUE(is_void_or_unit<Unit>::value);
|
||||
EXPECT_FALSE(is_void_or_unit<int>::value);
|
||||
}
|
||||
Reference in New Issue
Block a user