LeechCraft
0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
monadicfuture.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <QFuture>
12
#include <
util/sll/functor.h
>
13
#include "
futures.h
"
14
15
namespace
LC::Util
16
{
17
template
<
typename
T>
18
struct
InstanceFunctor
<
QFuture
<T>>
19
{
20
template
<
typename
F>
21
using
FmapResult_t
=
QFuture<std::decay_t<std::result_of_t<F (T)>
>>;
22
23
template
<
typename
F>
24
static
FmapResult_t<F>
Apply
(
const
QFuture<T>
& fut,
const
F& func)
25
{
26
return
Sequence (
nullptr
, fut) >>
27
[func] (
const
T& val) {
return
MakeReadyFuture (func (val)); };
28
}
29
};
30
}
LC::Util::InstanceFunctor
The Functor class is used for types that can be mapped over.
Definition:
functor.h:35
LC::Util::InstanceFunctor< QFuture< T > >::Apply
static FmapResult_t< F > Apply(const QFuture< T > &fut, const F &func)
Definition:
monadicfuture.h:24
functor.h
QFuture
Definition:
idownload.h:17
LC::Util
Definition:
icoreproxy.h:33
futures.h
src
util
threads
monadicfuture.h
Generated by
1.8.14