2#ifndef TTG_PARSEC_TTVALUE_H
3#define TTG_PARSEC_TTVALUE_H
17 template<
typename DerivedT>
47 ttg_data_copy_t::operator=(v);
54 ttg_data_copy_t::operator=(std::move(v));
59 return static_cast<DerivedT*
>(
this);
63 return *
static_cast<DerivedT*
>(
this);
67 return *
static_cast<DerivedT*
>(
this);
73 template<
typename T,
typename Enabler =
void>
84 template<
typename ValueT>
93 template<
typename ValueT>
95 if constexpr (std::is_base_of_v<TTValue<std::decay_t<ValueT>>, std::decay_t<ValueT>>) {
98 return std::forward<ValueT>(value);
ttg_data_copy_t *& ttg_data_copy_container()
this contains PaRSEC-based TTG functionality
auto persistent(ValueT &&value)
std::decay_t< DerivedT > derived_type
const derived_type & get_derived() const
TTValue & operator=(TTValue &&v)
TTValue & operator=(const TTValue &v)
derived_type & get_derived()
virtual ~TTValue()=default
TTValue(const TTValue &v)
virtual void * get_ptr() override final
std::add_lvalue_reference_t< std::remove_reference_t< ValueT > > lvalue_reference_type
lvalue_reference_type value_ref
std::decay_t< ValueT > value_type
ttg_data_copy_container_setter(ttg_parsec::detail::ttg_data_copy_t *ptr)