@@ -238,35 +238,43 @@ class histogram<Static, Axes, Storage> {
238
238
inline void xlin_w (std::size_t &, std::size_t &, double &) const {}
239
239
240
240
template <unsigned D, typename First, typename ... Rest>
241
- inline void xlin_w (std::size_t &idx, std::size_t &stride, double &x,
241
+ inline
242
+ typename disable_if<is_same<First, weight>>::type
243
+ xlin_w (std::size_t &idx, std::size_t &stride, double &x,
242
244
First &&first, Rest &&... rest) const {
243
245
detail::xlin (idx, stride, fusion::at_c<D>(axes_),
244
246
std::forward<First>(first));
245
247
return xlin_w<D + 1 >(idx, stride, x, std::forward<Rest>(rest)...);
246
248
}
247
249
248
- template <unsigned D, typename ... Rest>
249
- inline void xlin_w (std::size_t &idx, std::size_t &stride, double &x,
250
- const weight w, Rest &&... rest) const {
251
- x = w.value ;
250
+ template <unsigned D, typename First, typename ... Rest>
251
+ inline
252
+ typename enable_if<is_same<First, weight>>::type
253
+ xlin_w (std::size_t &idx, std::size_t &stride, double &x,
254
+ First &&first, Rest &&... rest) const {
255
+ x = first.value ;
252
256
return xlin_w<D>(idx, stride, x, std::forward<Rest>(rest)...);
253
257
}
254
258
255
259
template <unsigned D>
256
260
inline void xlin_n (std::size_t &, std::size_t &, unsigned &) const {}
257
261
258
262
template <unsigned D, typename First, typename ... Rest>
259
- inline void xlin_n (std::size_t &idx, std::size_t &stride, unsigned &x,
263
+ inline
264
+ typename disable_if<is_same<First, count>>::type
265
+ xlin_n (std::size_t &idx, std::size_t &stride, unsigned &x,
260
266
First &&first, Rest &&... rest) const {
261
267
detail::xlin (idx, stride, fusion::at_c<D>(axes_),
262
268
std::forward<First>(first));
263
269
return xlin_n<D + 1 >(idx, stride, x, std::forward<Rest>(rest)...);
264
270
}
265
271
266
- template <unsigned D, typename ... Rest>
267
- inline void xlin_n (std::size_t &idx, std::size_t &stride, unsigned &x,
268
- const count c, Rest &&... rest) const {
269
- x = c.value ;
272
+ template <unsigned D, typename First, typename ... Rest>
273
+ inline
274
+ typename enable_if<is_same<First, count>>::type
275
+ xlin_n (std::size_t &idx, std::size_t &stride, unsigned &x,
276
+ First&& first, Rest &&... rest) const {
277
+ x = first.value ;
270
278
return xlin_n<D>(idx, stride, x, std::forward<Rest>(rest)...);
271
279
}
272
280
0 commit comments