9 template<
typename _T_,
typename... _TOther_>
12 static std::tuple<
typename _T_::Type,
typename _TOther_::Type...> create()
17 template<
typename _T_>
20 static std::tuple<typename _T_::Type> create()
22 return std::tuple<typename _T_::Type>(_T_::Default);
31 template<
typename _T_, _T_ _default_>
35 static constexpr _T_ Default = _default_;
70 template<
typename _T_,
typename... _Annotation_>
71 class AnnotatedPointer
73 typedef std::tuple<
typename _Annotation_::Type...> AnnotationsT;
75 AnnotatedPointer(_T_* _t,
typename _Annotation_::Type... _annotations) : t(_t), m_annotations(_annotations...)
78 AnnotatedPointer(_T_* _t) : t(_t), m_annotations( details::make_default<_Annotation_...>::create() )
81 _T_* pointer() {
return t; }
82 _T_* operator*() {
return t; }
83 const _T_* operator*()
const {
return t; }
84 std::tuple<
typename _Annotation_::Type...> annotations()
const {
return m_annotations; }
86 std::tuple_element_t<_index_, AnnotationsT> get()
const {
return std::get<_index_>(m_annotations); }
90 AnnotationsT m_annotations;
Definition AnnotatedPointer.h:11