9 template<
typename _T_,
typename... _TOther_>
12 static std::tuple<
typename _T_::Type,
typename _TOther_::Type...> create()
14 return std::tuple_cat(std::tuple<typename _T_::Type>(_T_::Default),
18 template<
typename _T_>
21 static std::tuple<typename _T_::Type> create()
23 return std::tuple<typename _T_::Type>(_T_::Default);
33 template<
typename _T_, _T_ _default_>
37 static constexpr _T_ Default = _default_;
73 template<
typename _T_,
typename... _Annotation_>
74 class AnnotatedPointer
76 typedef std::tuple<
typename _Annotation_::Type...> AnnotationsT;
78 AnnotatedPointer(_T_* _t,
typename _Annotation_::Type... _annotations)
79 : t(_t), m_annotations(_annotations...)
82 AnnotatedPointer(_T_* _t)
83 : t(_t), m_annotations(details::make_default<_Annotation_...>::create())
86 _T_* pointer() {
return t; }
87 _T_* operator*() {
return t; }
88 const _T_* operator*()
const {
return t; }
89 std::tuple<
typename _Annotation_::Type...> annotations()
const {
return m_annotations; }
91 std::tuple_element_t<_index_, AnnotationsT> get()
const
93 return std::get<_index_>(m_annotations);
98 AnnotationsT m_annotations;
Definition AnnotatedPointer.h:11