Skip to content

Commit 9d9b44e

Browse files
committed
gcc-4.8 fix
1 parent 0be8c7b commit 9d9b44e

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

include/boost/histogram/histogram_impl_static.hpp

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -238,35 +238,43 @@ class histogram<Static, Axes, Storage> {
238238
inline void xlin_w(std::size_t &, std::size_t &, double &) const {}
239239

240240
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,
242244
First &&first, Rest &&... rest) const {
243245
detail::xlin(idx, stride, fusion::at_c<D>(axes_),
244246
std::forward<First>(first));
245247
return xlin_w<D + 1>(idx, stride, x, std::forward<Rest>(rest)...);
246248
}
247249

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;
252256
return xlin_w<D>(idx, stride, x, std::forward<Rest>(rest)...);
253257
}
254258

255259
template <unsigned D>
256260
inline void xlin_n(std::size_t &, std::size_t &, unsigned &) const {}
257261

258262
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,
260266
First &&first, Rest &&... rest) const {
261267
detail::xlin(idx, stride, fusion::at_c<D>(axes_),
262268
std::forward<First>(first));
263269
return xlin_n<D + 1>(idx, stride, x, std::forward<Rest>(rest)...);
264270
}
265271

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;
270278
return xlin_n<D>(idx, stride, x, std::forward<Rest>(rest)...);
271279
}
272280

0 commit comments

Comments
 (0)