hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar-group.org | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | This channel is logged: irclog.cct.lsu.edu
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 256 seconds]
K-ballo1 is now known as K-ballo
Yorlik_ has joined #ste||ar
Yorlik has quit [Ping timeout: 244 seconds]
hkaiser has quit [Quit: Bye!]
K-ballo has quit [Ping timeout: 256 seconds]
K-ballo has joined #ste||ar
Yorlik_ has quit [Read error: Connection reset by peer]
Yorlik has joined #ste||ar
ms[m]1 has quit [Quit: You have been kicked for being idle]
<pansysk75[m]1>
I thought of writing a wrapper function for foo that also takes future3 as a parameter (and just doesn't use future3's result), I'll try that, just wondering if there was a facility for that
<hkaiser>
pansysk75[m]1: yes, that's the solution
<hkaiser>
foo() should however at least call future3.get() to propagate possible exceptions
<pansysk75[m]1>
sounds good, thank you
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 252 seconds]
K-ballo1 is now known as K-ballo
ms[m] has joined #ste||ar
<satacker[m]>
<hkaiser> "elegant solution, actually ;-)" <- Because it is a single sender, the value types are `value_types<variant<tuple<void>>>` ?
<hkaiser>
satacker[m]: value_types_of_t exists twice, once in execution, and once in a detail namespace - the first relies on the second - and the second assumes that the variant/tuple type arguments are meta functions
<hkaiser>
so the code you showed passes meta functions that will be used to calculate the value types of the target
<hkaiser>
single_or<void> will evaluate to the value_type (assuming it's a single-element variant) or if the target doesn't expose any value type, then it will evaluate to void
<hkaiser>
satacker[m]: single_or<void> represents essentially a construct that is equivalent to the template template variant
<hkaiser>
i.e. it can be passed to the value_type_of_t instead of variant, so instead of saying value_types_of_t<S, Env, variant, tuple> you can say value_types_of_t<S, Env, single_or<void>, tuple> and instead of creating a variant<ValueType> it will 'create' a (single_or<void>)<ValueType>