17 #ifndef VCSN_DESIGN_PATTERN_ELEMENT_HXX
18 # define VCSN_DESIGN_PATTERN_ELEMENT_HXX
29 template <
class S,
class T>
35 static_assertion_(not dynamic_traits<S>::ret,
36 need_dynamic_structural_element);
43 template <
class S,
class T>
50 template <
class S,
class T>
54 value_(op_convert(other.structure(),
SELECT(T), other.value()))
57 template <
class S,
class T>
58 template<
typename OtherS,
typename U>
61 value_ (op_convert(this->_structure_get(), value_,
62 other.structure(), other.value()))
70 template <
class S,
class T>
75 static_assertion_(not dynamic_traits<S>::ret,
76 need_dynamic_structural_element);
79 template <
class S,
class T>
85 static_assertion_(not dynamic_traits<S>::ret,
86 need_dynamic_structural_element);
93 template <
class S,
class T>
99 template <
class S,
class T>
102 value_(op_convert(this->_structure_get(),
SELECT(T), other))
104 template <
class S,
class T>
108 value_(op_convert(this->_structure_get(),
SELECT(T), other))
111 template <
class S,
class T>
112 template<
typename OtherS,
typename U>
115 value_(op_convert(this->_structure_get(),
SELECT(T),
116 other.structure(), other.value()))
123 template <
class S,
class T>
127 this->_structure_assign(other.
structure());
132 template <
class S,
class T>
137 this->_structure_assign(other.
structure());
142 template <
class S,
class T>
143 template<
typename OtherS,
typename U>
151 template <
class S,
class T>
163 template <
class S,
class T>
167 this->_structure_attach(structure);
170 template <
class S,
class T>
174 return this->_structure_get();
177 template <
class S,
class T>
183 template <
class S,
class T>
192 #endif // ! VCSN_DESIGN_PATTERN_ELEMENT_HXX