MUDA
Loading...
Searching...
No Matches
type_modifier.h
1#pragma once
2#include <type_traits>
3#include <muda/muda_def.h>
4
5namespace muda
6{
7/*************************************************************************
8*
9* Raw Type
10*
11*************************************************************************/
12template <typename T>
13using raw_type_t = std::remove_all_extents_t<std::remove_reference_t<T>>;
14
15/*************************************************************************
16*
17* View Type
18*
19*************************************************************************/
20template <typename T>
22{
23 using type = T;
24};
25
26template <typename T>
28{
29 using type = T;
30};
31
32template <typename T>
33using read_only_viewer_t = typename read_only_viewer<T>::type;
34
35template <typename T>
36constexpr bool is_read_only_viewer_v = std::is_same_v<T, read_only_viewer_t<T>>;
37
38template <typename T>
39using read_write_viewer_t = typename read_write_viewer<T>::type;
40
41template <typename T>
42constexpr bool is_read_write_viewer_v = std::is_same_v<T, read_write_viewer_t<T>>;
43
44template <typename T>
45constexpr bool is_uniform_viewer_v =
46 is_read_only_viewer_v<T> && is_read_write_viewer_v<T>;
47
48#pragma once
49
50template <typename T>
51MUDA_GENERIC MUDA_INLINE T* remove_const(const T* ptr) noexcept
52{
53 return const_cast<T*>(ptr);
54}
55
56template <typename T>
57MUDA_GENERIC MUDA_INLINE T& remove_const(const T& ref) noexcept
58{
59 return const_cast<T&>(ref);
60}
61} // namespace muda
Definition type_modifier.h:22
Definition type_modifier.h:28