From e7e962a1589e498f7061aefc07820c2076b6cae1 Mon Sep 17 00:00:00 2001 From: Daniel Arndt Date: Thu, 3 Apr 2025 15:02:18 -0400 Subject: [PATCH] Mark ArraView::data access only has device-callable for MemorySpace::Default --- include/deal.II/base/array_view.h | 33 +++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/include/deal.II/base/array_view.h b/include/deal.II/base/array_view.h index 010e6b7a2b..0e187c3449 100644 --- a/include/deal.II/base/array_view.h +++ b/include/deal.II/base/array_view.h @@ -431,7 +431,15 @@ public: * Return a pointer to the underlying array serving as element storage. * In case the container is empty a nullptr is returned. */ - DEAL_II_HOST_DEVICE value_type * + template + DEAL_II_HOST_DEVICE + std::enable_if_t, + value_type *> + data() const noexcept; + + template + std::enable_if_t, + value_type *> data() const noexcept; /** @@ -661,9 +669,26 @@ ArrayView::operator!=( template -inline DEAL_II_HOST_DEVICE - typename ArrayView::value_type * - ArrayView::data() const noexcept +template +inline DEAL_II_HOST_DEVICE std::enable_if_t< + std::is_same_v, + typename ArrayView::value_type *> +ArrayView::data() const noexcept +{ + if (n_elements == 0) + return nullptr; + else + return starting_element; +} + + + +template +template +inline std::enable_if_t< + std::is_same_v, + typename ArrayView::value_type *> +ArrayView::data() const noexcept { if (n_elements == 0) return nullptr; -- 2.39.5