14 template <
bool OtherIsConst,
typename U>
19 using auto_const_t =
typename Base::template auto_const_t<U>;
21 auto_const_t<T>* m_data =
nullptr;
29 using ThisViewer =
typename std::conditional_t<IsConst, ConstViewer, NonConstViewer>;
31 MUDA_GENERIC
VarViewT() MUDA_NOEXCEPT =
default;
32 MUDA_GENERIC
VarViewT(auto_const_t<T>* data) MUDA_NOEXCEPT;
35 template <
bool OtherIsConst>
38 MUDA_GENERIC auto_const_t<T>* data()
const MUDA_NOEXCEPT;
40 MUDA_GENERIC
ConstView as_const()
const MUDA_NOEXCEPT;
42 MUDA_GENERIC
ConstViewer cviewer()
const MUDA_NOEXCEPT;
43 MUDA_GENERIC ThisViewer viewer()
const MUDA_NOEXCEPT;
45 MUDA_HOST
void fill(
const T& value)
const MUDA_REQUIRES(!IsConst);
46 MUDA_HOST
void copy_to(T* data)
const;
47 MUDA_HOST
void copy_from(
const T* data)
const MUDA_REQUIRES(!IsConst);
48 MUDA_HOST
void copy_from(
const ConstView& val)
const MUDA_REQUIRES(!IsConst);
58 using iterator_category = std::random_access_iterator_tag;
59 using difference_type = size_t;
61 MUDA_GENERIC reference operator*() {
return *data(); }
62 MUDA_GENERIC auto_const_t<T>& operator[](
int i)
const {
return *data(); }