Core& operator=(Core&&) = delete;
/// May call from any thread
- bool hasResult() const {
+ bool hasResult() const noexcept {
switch (fsm_.getState()) {
case State::OnlyResult:
case State::Armed:
}
/// May call from any thread
- bool ready() const {
+ bool ready() const noexcept {
return hasResult();
}
interruptLock_.lock();
}
if (!interrupt_ && !hasResult()) {
- interrupt_ = folly::make_unique<exception_wrapper>(std::move(e));
+ interrupt_ = std::make_unique<exception_wrapper>(std::move(e));
if (interruptHandler_) {
interruptHandler_(*interrupt_);
}
typename THead, typename... TTail>
void collectVariadicHelper(const std::shared_ptr<T<Ts...>>& ctx,
THead&& head, TTail&&... tail) {
- head.setCallback_([ctx](Try<typename THead::value_type>&& t) {
- ctx->template setPartialResult<typename THead::value_type,
- sizeof...(Ts) - sizeof...(TTail) - 1>(t);
+ using ValueType = typename std::decay<THead>::type::value_type;
+ std::forward<THead>(head).setCallback_([ctx](Try<ValueType>&& t) {
+ ctx->template setPartialResult<
+ ValueType,
+ sizeof...(Ts) - sizeof...(TTail)-1>(t);
});
// template tail-recursion
collectVariadicHelper(ctx, std::forward<TTail>(tail)...);