8 #ifndef DYNAMIC_H_INCLUDED
9 #define DYNAMIC_H_INCLUDED
11 #include <Pb/meta_fwd.h>
12 #include <Pb/type_list.h>
13 #include <Pb/type_at.h>
14 #include <Pb/integer_sequence.h>
28 template <
typename T,
bool isContainer = false >
29 struct HasDynamic_Impl
35 struct HasDynamic_Impl<T, true>
36 :
value_if< vector_value<typename front<T>::type>::value,
39 has_dynamic<typename pop_front<T>::type>::value
48 struct HasDynamic_Impl<std::vector<T,A>, isContainerT>
53 template<
typename ListT,
57 struct DynamicFieldSequence
60 std::conditional< vector_value<typename front<ListT>::type>::value,
61 typename IntegralNode<IdxT, SeqT>::type,
66 DynamicFieldSequence< typename pop_front<ListT>::type,
77 template<
typename SeqT,
80 struct DynamicFieldSequence<MT, SeqT, IdxT>
83 typedef SeqT NextSeqT;
88 template <
typename T,
bool IsHaveDynamicT = false >
89 struct DynamicFields_Impl
96 struct DynamicFields_Impl<T, true>
97 : DynamicFieldSequence<T, MT, 0>
112 template <
typename T>
114 : detail::HasDynamic_Impl<T, type_container<T>::value>
120 template <
typename T>
122 : detail::DynamicFields_Impl<T, has_dynamic<T>::value>