Skip to content

Commit

Permalink
Fixing C++11 compatibility issue
Browse files Browse the repository at this point in the history
  • Loading branch information
hkaiser committed Aug 21, 2017
1 parent bc7eb90 commit aa5bf3e
Showing 1 changed file with 31 additions and 8 deletions.
39 changes: 31 additions & 8 deletions hpx/runtime/actions/transfer_base_action.hpp
Expand Up @@ -68,6 +68,33 @@ namespace hpx { namespace actions
ar & data_;
}

#if defined(HPX_DISABLE_ASSERTS) || defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE
Args& data()
{
return *data_;
}
HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE
Args const& data() const
{
return *data_;
}
#else
HPX_HOST_DEVICE HPX_FORCEINLINE
Args& data()
{
HPX_ASSERT(!!data_);
return *data_;
}
HPX_HOST_DEVICE HPX_FORCEINLINE
Args const& data() const
{
HPX_ASSERT(!!data_);
return *data_;
}
#endif

private:
std::unique_ptr<Args> data_;
};
}
Expand All @@ -78,37 +105,33 @@ namespace hpx { namespace util
template <std::size_t I, typename Args>
HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE
typename util::tuple_element<I, Args>::type&
get(hpx::actions::detail::argument_holder<Args>& t) noexcept
get(hpx::actions::detail::argument_holder<Args>& t)
{
HPX_ASSERT(!!t.data_);
return util::tuple_element<I, Args>::get(*t.data_);
}

template <std::size_t I, typename Args>
HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE
typename util::tuple_element<I, Args>::type const&
get(hpx::actions::detail::argument_holder<Args> const& t) noexcept
get(hpx::actions::detail::argument_holder<Args> const& t)
{
HPX_ASSERT(!!t.data_);
return util::tuple_element<I, Args>::get(*t.data_);
}

template <std::size_t I, typename Args>
HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE
typename util::tuple_element<I, Args>::type&&
get(hpx::actions::detail::argument_holder<Args>&& t) noexcept
get(hpx::actions::detail::argument_holder<Args>&& t)
{
HPX_ASSERT(!!t.data_);
return std::forward<typename util::tuple_element<I, Args>::type>(
util::get<I>(*t.data_));
}

template <std::size_t I, typename Args>
HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE
typename util::tuple_element<I, Args>::type const&&
get(hpx::actions::detail::argument_holder<Args> const&& t) noexcept
get(hpx::actions::detail::argument_holder<Args> const&& t)
{
HPX_ASSERT(!!t.data_);
return std::forward<
typename util::tuple_element<I, Args>::type const
>(util::get<I>(*t.data_));
Expand Down

0 comments on commit aa5bf3e

Please sign in to comment.