27 #ifndef MLN_CORE_INTERNAL_COORD_IMPL_HH
28 # define MLN_CORE_INTERNAL_COORD_IMPL_HH
35 # include <mln/core/internal/force_exact.hh>
50 template <
unsigned n,
typename C,
typename E>
54 template <
typename C,
typename E>
55 struct coord_impl_<1, C, E>
62 template <
typename C,
typename E>
63 struct coord_impl_<2, C, E>
72 template <
typename C,
typename E>
73 struct coord_impl_<3, C, E>
88 template <
unsigned n,
typename C,
typename E>
92 template <
typename C,
typename E>
102 template <
typename C,
typename E>
106 const C& row()
const;
110 const C& col()
const;
116 template <
typename C,
typename E>
120 const C& sli()
const;
124 const C& row()
const;
128 const C& col()
const;
134 # ifndef MLN_INCLUDE_ONLY
140 template <
typename C,
typename E>
144 return internal::force_exact<E>(*this)[0];
149 template <
typename C,
typename E>
153 return internal::force_exact<E>(*this)[0];
156 template <
typename C,
typename E>
160 return internal::force_exact<E>(*this)[1];
165 template <
typename C,
typename E>
169 return internal::force_exact<E>(*this)[0];
172 template <
typename C,
typename E>
176 return internal::force_exact<E>(*this)[1];
179 template <
typename C,
typename E>
183 return internal::force_exact<E>(*this)[2];
191 template <
typename C,
typename E>
195 return internal::force_exact<E>(*this)[0];
198 template <
typename C,
typename E>
202 return internal::force_exact<E>(*this)[0];
207 template <
typename C,
typename E>
211 return internal::force_exact<E>(*this)[0];
214 template <
typename C,
typename E>
218 return internal::force_exact<E>(*this)[0];
221 template <
typename C,
typename E>
225 return internal::force_exact<E>(*this)[1];
228 template <
typename C,
typename E>
232 return internal::force_exact<E>(*this)[1];
237 template <
typename C,
typename E>
241 return internal::force_exact<E>(*this)[0];
244 template <
typename C,
typename E>
248 return internal::force_exact<E>(*this)[0];
251 template <
typename C,
typename E>
255 return internal::force_exact<E>(*this)[1];
258 template <
typename C,
typename E>
262 return internal::force_exact<E>(*this)[1];
265 template <
typename C,
typename E>
269 return internal::force_exact<E>(*this)[2];
272 template <
typename C,
typename E>
276 return internal::force_exact<E>(*this)[2];
279 # endif // ! MLN_INCLUDE_ONLY
286 #endif // ! MLN_CORE_INTERNAL_COORD_IMPL_HH