41static_assert(std::is_same<double, RawType<double>::type>::value,
43static_assert(std::is_same<double, RawType<const double>::type>::value,
45static_assert(std::is_same<double, RawType<volatile double>::type>::value,
47static_assert(std::is_same<double, RawType<const volatile double>::type>::value,
50static_assert(std::is_same<double, RawType<double *>::type>::value,
52static_assert(std::is_same<double, RawType<const double *>::type>::value,
54static_assert(std::is_same<double, RawType<volatile double *>::type>::value,
57 std::is_same<double, RawType<const volatile double *>::type>::value,
60static_assert(std::is_same<double, RawType<double *const>::type>::value,
62static_assert(std::is_same<double, RawType<const double *const>::type>::value,
65 std::is_same<double, RawType<volatile double *const>::type>::value,
68 std::is_same<double, RawType<const volatile double *const>::type>::value,
71static_assert(std::is_same<double, RawType<double *volatile>::type>::value,
74 std::is_same<double, RawType<const double *volatile>::type>::value,
77 std::is_same<double, RawType<volatile double *volatile>::type>::value,
80 std::is_same<double, RawType<const volatile double *volatile>::type>::value,
84 std::is_same<double, RawType<double *const volatile>::type>::value,
87 std::is_same<double, RawType<const double *const volatile>::type>::value,
90 std::is_same<double, RawType<volatile double *const volatile>::type>::value,
98 std::is_same<double, RawType<std::shared_ptr<double>>::type>::value,
101 std::is_same<double, RawType<const std::shared_ptr<double>>::type>::value,
105 RawType<volatile std::shared_ptr<double>>::type>::value,
109 RawType<const volatile std::shared_ptr<double>>::type>::value,
113 std::is_same<double, RawType<std::shared_ptr<const double>>::type>::value,
117 RawType<const std::shared_ptr<const double>>::type>::value,
121 RawType<volatile std::shared_ptr<const double>>::type>::value,
126 RawType<const volatile std::shared_ptr<const double>>::type>::value,
131 RawType<std::shared_ptr<volatile double>>::type>::value,
135 RawType<const std::shared_ptr<volatile double>>::type>::value,
140 RawType<volatile std::shared_ptr<volatile double>>::type>::value,
145 RawType<const volatile std::shared_ptr<volatile double>>::type>::value,
150 RawType<std::shared_ptr<const volatile double>>::type>::value,
155 RawType<const std::shared_ptr<const volatile double>>::type>::value,
160 RawType<volatile std::shared_ptr<const volatile double>>::type>::value,
162static_assert(std::is_same<double, RawType<
const volatile std::shared_ptr<
163 const volatile double>>::type>::value,
std::decay< typenamestd::remove_pointer< T >::type >::type type