diff --git a/include/boost/histogram/axis.hpp b/include/boost/histogram/axis.hpp index d34345a6..1abaf5ba 100644 --- a/include/boost/histogram/axis.hpp +++ b/include/boost/histogram/axis.hpp @@ -188,24 +188,21 @@ private: }; namespace transform { - template - struct identity { - static Value forward(Value v) { return v; } - static Value inverse(Value v) { return v; } - }; +template struct identity { + static Value forward(Value v) { return v; } + static Value inverse(Value v) { return v; } +}; - template - struct log { - static Value forward(Value v) { return std::log(v); } - static Value inverse(Value v) { return std::exp(v); } - }; +template struct log { + static Value forward(Value v) { return std::log(v); } + static Value inverse(Value v) { return std::exp(v); } +}; - template - struct sqrt { - static Value forward(Value v) { return std::sqrt(v); } - static Value inverse(Value v) { return v*v; } - }; -} +template struct sqrt { + static Value forward(Value v) { return std::sqrt(v); } + static Value inverse(Value v) { return v * v; } +}; +} // namespace transform /** Axis for binning real-valued data into equidistant bins. * @@ -213,7 +210,7 @@ namespace transform { * Very fast. Binning is a O(1) operation. */ template class Transform = transform::identity> + template class Transform = transform::identity> class regular_axis : public axis_base, boost::operators> { public: @@ -254,13 +251,16 @@ public: /// Returns the starting edge of the bin. value_type operator[](int idx) const { if (idx < 0) { - return Transform::inverse(-std::numeric_limits::infinity()); + return Transform::inverse( + -std::numeric_limits::infinity()); } if (idx > bins()) { - return Transform::inverse(std::numeric_limits::infinity()); + return Transform::inverse( + std::numeric_limits::infinity()); } const value_type z = value_type(idx) / bins(); - return Transform::inverse((1.0 - z) * min_ + z * (min_ + delta_ * bins())); + return Transform::inverse((1.0 - z) * min_ + + z * (min_ + delta_ * bins())); } bool operator==(const regular_axis &o) const { @@ -279,8 +279,14 @@ public: private: value_type min_ = 0.0, delta_ = 1.0; - template class Transform1> - friend void serialize(Archive &, regular_axis &, unsigned); + template class Transform1> + friend void serialize(Archive &, regular_axis &, + unsigned); + + // workaround for gcc-4.8 + template + friend void serialize(Archive &, regular_axis &, unsigned); }; /** Axis for real-valued angles. diff --git a/include/boost/histogram/histogram_impl_dynamic.hpp b/include/boost/histogram/histogram_impl_dynamic.hpp index 72324cae..51c5ee42 100644 --- a/include/boost/histogram/histogram_impl_dynamic.hpp +++ b/include/boost/histogram/histogram_impl_dynamic.hpp @@ -288,9 +288,10 @@ inline histogram< Dynamic, typename detail::combine>::type, Storage> make_dynamic_histogram_with(Axes &&... axes) { - return histogram>::type, - Storage>(std::forward(axes)...); + return histogram< + Dynamic, + typename detail::combine>::type, + Storage>(std::forward(axes)...); } } // namespace histogram diff --git a/include/boost/histogram/histogram_impl_static.hpp b/include/boost/histogram/histogram_impl_static.hpp index 1ed07528..371e17b9 100644 --- a/include/boost/histogram/histogram_impl_static.hpp +++ b/include/boost/histogram/histogram_impl_static.hpp @@ -152,8 +152,7 @@ public: /// Get N-th axis template - constexpr - typename std::add_const< + constexpr typename std::add_const< typename fusion::result_of::value_at_c::type>::type & axis(std::integral_constant) const { static_assert(N < axes_size::value, "axis index out of range"); @@ -161,8 +160,7 @@ public: } // Get first axis (convenience for 1-d histograms) - constexpr - typename std::add_const< + constexpr typename std::add_const< typename fusion::result_of::value_at_c::type>::type & axis() const { return fusion::at_c<0>(axes_); diff --git a/include/boost/histogram/serialization.hpp b/include/boost/histogram/serialization.hpp index 38d7ceae..a19f06d6 100644 --- a/include/boost/histogram/serialization.hpp +++ b/include/boost/histogram/serialization.hpp @@ -132,7 +132,7 @@ inline void serialize(Archive &ar, axis_base &base, ar &base.label_; } -template class Transform> +template class Transform> inline void serialize(Archive &ar, regular_axis &axis, unsigned /* version */) { ar &boost::serialization::base_object>(axis); @@ -140,6 +140,15 @@ inline void serialize(Archive &ar, regular_axis &axis, ar &axis.delta_; } +// workaround for gcc-4.8 +template +inline void serialize(Archive &ar, regular_axis &axis, + unsigned /* version */) { + ar &boost::serialization::base_object>(axis); + ar &axis.min_; + ar &axis.delta_; +} + template inline void serialize(Archive &ar, circular_axis &axis, unsigned /* version */) { diff --git a/test/axis_test.cpp b/test/axis_test.cpp index e1465254..f5ec9c60 100644 --- a/test/axis_test.cpp +++ b/test/axis_test.cpp @@ -18,7 +18,7 @@ #include #define BOOST_TEST_NOT(expr) BOOST_TEST(!(expr)) -#define BOOST_TEST_IS_CLOSE(a, b, eps) BOOST_TEST(std::abs(a-b) < eps) +#define BOOST_TEST_IS_CLOSE(a, b, eps) BOOST_TEST(std::abs(a - b) < eps) template void test_real_axis_iterator(Axis &&a, int begin, int end) { diff --git a/test/dynamic_histogram_test.cpp b/test/dynamic_histogram_test.cpp index 0dfd3460..2482527d 100644 --- a/test/dynamic_histogram_test.cpp +++ b/test/dynamic_histogram_test.cpp @@ -12,11 +12,11 @@ #include #include #include +#include #include #include #include #include -#include #include #include #include diff --git a/test/static_histogram_test.cpp b/test/static_histogram_test.cpp index 2d45b30b..d82bd676 100644 --- a/test/static_histogram_test.cpp +++ b/test/static_histogram_test.cpp @@ -10,11 +10,11 @@ #include #include #include +#include #include #include #include #include -#include #include #include #include