diff --git a/include/boost/gil/color_base.hpp b/include/boost/gil/color_base.hpp index 16609429a0..a05b409de8 100644 --- a/include/boost/gil/color_base.hpp +++ b/include/boost/gil/color_base.hpp @@ -79,8 +79,14 @@ struct homogeneous_color_base { using layout_t = Layout; - homogeneous_color_base() = default; - homogeneous_color_base(Element v) : v0_(v) {} + template + < + typename U = Element, + typename = typename std::enable_if::value>::type + > + homogeneous_color_base() : v0_{} {}; + + explicit homogeneous_color_base(Element v) : v0_(v) {} template homogeneous_color_base(homogeneous_color_base const& c) @@ -100,7 +106,7 @@ struct homogeneous_color_base operator Element() const { return v0_; } private: - Element v0_{}; + Element v0_; }; /// \brief A homogeneous color base holding two color elements @@ -111,8 +117,15 @@ struct homogeneous_color_base { using layout_t = Layout; - homogeneous_color_base() = default; + template + < + typename U = Element, + typename = typename std::enable_if::value>::type + > + homogeneous_color_base() : v0_{}, v1_{} {} + explicit homogeneous_color_base(Element v) : v0_(v), v1_(v) {} + homogeneous_color_base(Element v0, Element v1) : v0_(v0), v1_(v1) {} template @@ -174,8 +187,8 @@ struct homogeneous_color_base } private: - Element v0_{}; - Element v1_{}; + Element v0_; + Element v1_; }; /// \brief A homogeneous color base holding three color elements. @@ -186,8 +199,15 @@ struct homogeneous_color_base { using layout_t = Layout; - homogeneous_color_base() = default; + template + < + typename U = Element, + typename = typename std::enable_if::value>::type + > + homogeneous_color_base() : v0_{}, v1_{}, v2_{} {} + explicit homogeneous_color_base(Element v) : v0_(v), v1_(v), v2_(v) {} + homogeneous_color_base(Element v0, Element v1, Element v2) : v0_(v0), v1_(v1), v2_(v2) {} @@ -268,9 +288,9 @@ struct homogeneous_color_base } private: - Element v0_{}; - Element v1_{}; - Element v2_{}; + Element v0_; + Element v1_; + Element v2_; }; /// \brief A homogeneous color base holding four color elements. @@ -281,8 +301,15 @@ struct homogeneous_color_base { using layout_t = Layout; - homogeneous_color_base() = default; + template + < + typename U = Element, + typename = typename std::enable_if::value>::type + > + homogeneous_color_base() : v0_{}, v1_{}, v2_{}, v3_{} {} + explicit homogeneous_color_base(Element v) : v0_(v), v1_(v), v2_(v), v3_(v) {} + homogeneous_color_base(Element v0, Element v1, Element v2, Element v3) : v0_(v0), v1_(v1), v2_(v2), v3_(v3) {} @@ -377,10 +404,10 @@ struct homogeneous_color_base } private: - Element v0_{}; - Element v1_{}; - Element v2_{}; - Element v3_{}; + Element v0_; + Element v1_; + Element v2_; + Element v3_; }; /// \brief A homogeneous color base holding five color elements. @@ -391,7 +418,15 @@ struct homogeneous_color_base { using layout_t = Layout; - homogeneous_color_base() = default; + template + < + typename U = Element, + typename = typename std::enable_if::value>::type + > + homogeneous_color_base() + : v0_{}, v1_{}, v2_{}, v3_{}, v4_{} + {} + explicit homogeneous_color_base(Element v) : v0_(v), v1_(v), v2_(v), v3_(v), v4_(v) {} @@ -505,11 +540,11 @@ struct homogeneous_color_base } private: - Element v0_{}; - Element v1_{}; - Element v2_{}; - Element v3_{}; - Element v4_{}; + Element v0_; + Element v1_; + Element v2_; + Element v3_; + Element v4_; }; #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) diff --git a/test/core/pixel/test_fixture.hpp b/test/core/pixel/test_fixture.hpp index bf4e1ed8dc..c9ef03f32a 100644 --- a/test/core/pixel/test_fixture.hpp +++ b/test/core/pixel/test_fixture.hpp @@ -69,7 +69,7 @@ class pixel_value public: using type = Pixel; using pixel_t = type; - type pixel_{}; + type pixel_; pixel_value() = default; explicit pixel_value(pixel_t const& pixel)