Skip to content

Commit d4a820b

Browse files
authored
Merge pull request #3495 from STEllAR-GROUP/fix_dataflow
Fixing dataflow
2 parents 72a4010 + 72f2fe4 commit d4a820b

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

hpx/util/detail/pack_traversal_async_impl.hpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <atomic>
2323
#include <cstddef>
2424
#include <exception>
25+
#include <functional>
2526
#include <iterator>
2627
#include <memory>
2728
#include <type_traits>
@@ -362,6 +363,12 @@ namespace util {
362363
return Range{std::begin(element), std::end(element)};
363364
}
364365

366+
template <typename T, typename Range = dynamic_async_range_of_t<T>>
367+
Range make_dynamic_async_range(std::reference_wrapper<T> ref_element)
368+
{
369+
return Range{std::begin(ref_element.get()), std::end(ref_element.get())};
370+
}
371+
365372
/// Represents a particular point in a asynchronous traversal hierarchy
366373
template <typename Frame, typename... Hierarchy>
367374
class async_traversal_point
@@ -483,7 +490,7 @@ namespace util {
483490
void async_traverse_one(Current&& current)
484491
{
485492
using ElementType =
486-
typename std::decay<decltype(*current)>::type;
493+
typename hpx::util::decay_unwrap<decltype(*current)>::type;
487494
return async_traverse_one_impl(
488495
container_category_of_t<ElementType>{},
489496
std::forward<Current>(current));

hpx/util/detail/pack_traversal_impl.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -902,22 +902,22 @@ namespace util {
902902
auto traverse(Strategy, T&& element)
903903
-> decltype(std::declval<mapping_helper>().match(
904904
std::declval<container_category_of_t<
905-
typename std::decay<T>::type>>(),
905+
typename hpx::util::decay_unwrap<T>::type>>(),
906906
std::declval<T>()));
907907

908908
/// \copybrief traverse
909909
template <typename T>
910910
auto try_traverse(Strategy, T&& element)
911911
-> decltype(std::declval<mapping_helper>().try_match(
912912
std::declval<container_category_of_t<
913-
typename std::decay<T>::type>>(),
913+
typename hpx::util::decay_unwrap<T>::type>>(),
914914
std::declval<T>()))
915915
{
916916
// We use tag dispatching here, to categorize the type T whether
917917
// it satisfies the container or tuple like requirements.
918918
// Then we can choose the underlying implementation accordingly.
919919
return try_match(
920-
container_category_of_t<typename std::decay<T>::type>{},
920+
container_category_of_t<typename hpx::util::decay_unwrap<T>::type>{},
921921
std::forward<T>(element));
922922
}
923923

0 commit comments

Comments
 (0)