olena-2.0-10-g93ca680 Fix compilation issues with g++ 4.6.1 and clang++.

* mln/topo/center_only_iter.hh, * mln/topo/face.hh, * mln/trait/images.hh, * mln/convert/from_to.hxx, * mln/core/image/dmorph/sub_image.hh, * mln/core/routine/init.hxx, * mln/algebra/vec.hh: Make declaration and forward declarations consistent. * mln/canvas/browsing/backdiagonal2d.hh, * mln/canvas/browsing/breadth_first_search.hh, * mln/canvas/browsing/depth_first_search.hh, * mln/canvas/browsing/diagonal2d.hh, * mln/canvas/browsing/directional.hh, * mln/canvas/browsing/fwd.hh, * mln/canvas/browsing/hyper_directional.hh, * mln/canvas/browsing/snake_fwd.hh, * mln/canvas/browsing/snake_generic.hh, * mln/canvas/browsing/snake_vert.hh, * mln/fun/v2v/hsl_to_rgb.hh, * mln/literal/black.hh, * mln/literal/colors.hh, * mln/literal/white.hh: Add a default constructor for global variable types. * mln/canvas/browsing/internal/graph_first_search.hh: Avoid a warning for an unused variable. * mln/data/was.median.hh: Fix type of the reference. --- milena/ChangeLog | 35 +++++ milena/mln/algebra/vec.hh | 2 +- milena/mln/canvas/browsing/backdiagonal2d.hh | 12 +- milena/mln/canvas/browsing/breadth_first_search.hh | 13 ++- milena/mln/canvas/browsing/depth_first_search.hh | 12 ++- milena/mln/canvas/browsing/diagonal2d.hh | 8 + .../canvas/browsing/dir_struct_elt_incr_update.hh | 11 ++- milena/mln/canvas/browsing/directional.hh | 12 ++- milena/mln/canvas/browsing/fwd.hh | 11 ++- milena/mln/canvas/browsing/hyper_directional.hh | 11 ++- .../canvas/browsing/internal/graph_first_search.hh | 1 + milena/mln/canvas/browsing/snake_fwd.hh | 11 +- milena/mln/canvas/browsing/snake_generic.hh | 11 +- milena/mln/canvas/browsing/snake_vert.hh | 5 +- milena/mln/convert/from_to.hxx | 2 +- milena/mln/core/image/dmorph/sub_image.hh | 2 +- milena/mln/core/routine/init.hxx | 2 +- milena/mln/data/was.median.hh | 8 +- milena/mln/fun/v2v/hsl_to_rgb.hh | 11 +- milena/mln/literal/black.hh | 14 ++- milena/mln/literal/colors.hh | 156 ++++++++++++++++---- milena/mln/literal/white.hh | 12 ++- milena/mln/topo/center_only_iter.hh | 2 +- milena/mln/topo/face.hh | 2 +- milena/mln/trait/images.hh | 2 +- 25 files changed, 303 insertions(+), 65 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index 7e5855b..724f344 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,3 +1,38 @@ +2011-11-21 Guillaume Lazzara <z@lrde.epita.fr> + + Fix compilation issues with g++ 4.6.1 and clang++. + + * mln/topo/center_only_iter.hh, + * mln/topo/face.hh, + * mln/trait/images.hh, + * mln/convert/from_to.hxx, + * mln/core/image/dmorph/sub_image.hh, + * mln/core/routine/init.hxx, + * mln/algebra/vec.hh: Make declaration and forward declarations + consistent. + + * mln/canvas/browsing/backdiagonal2d.hh, + * mln/canvas/browsing/breadth_first_search.hh, + * mln/canvas/browsing/depth_first_search.hh, + * mln/canvas/browsing/diagonal2d.hh, + * mln/canvas/browsing/dir_struct_elt_incr_update.hh, + * mln/canvas/browsing/directional.hh, + * mln/canvas/browsing/fwd.hh, + * mln/canvas/browsing/hyper_directional.hh, + * mln/canvas/browsing/snake_fwd.hh, + * mln/canvas/browsing/snake_generic.hh, + * mln/canvas/browsing/snake_vert.hh, + * mln/fun/v2v/hsl_to_rgb.hh, + * mln/literal/black.hh, + * mln/literal/colors.hh, + * mln/literal/white.hh: Add a default constructor for global + variable types. + + * mln/canvas/browsing/internal/graph_first_search.hh: Avoid a + warning for an unused variable. + + * mln/data/was.median.hh: Fix type of the reference. + 2011-10-04 Roland Levillain <roland@lrde.epita.fr> Handle the case of filling an empty border. diff --git a/milena/mln/algebra/vec.hh b/milena/mln/algebra/vec.hh index dc526ec..bbe23c8 100644 --- a/milena/mln/algebra/vec.hh +++ b/milena/mln/algebra/vec.hh @@ -56,7 +56,7 @@ namespace mln // Forward declarations. namespace algebra { template <unsigned n, typename T> class vec; - template <unsigned d, typename C> struct h_vec; + template <unsigned d, typename C> class h_vec; template <unsigned n, unsigned m, typename T> class mat; } diff --git a/milena/mln/canvas/browsing/backdiagonal2d.hh b/milena/mln/canvas/browsing/backdiagonal2d.hh index bd680aa..0ec455e 100644 --- a/milena/mln/canvas/browsing/backdiagonal2d.hh +++ b/milena/mln/canvas/browsing/backdiagonal2d.hh @@ -1,5 +1,5 @@ -// Copyright (C) 2007, 2008, 2009, 2010 EPITA Research and Development -// Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2010, 2011 EPITA Research and +// Development Laboratory (LRDE) // // This file is part of Olena. // @@ -82,6 +82,10 @@ namespace mln */ struct backdiagonal2d_t : public Browsing< backdiagonal2d_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + backdiagonal2d_t(); + template <typename F> void operator()(F& f) const; }; @@ -92,13 +96,15 @@ namespace mln # ifndef MLN_INCLUDE_ONLY - # ifndef MLN_WO_GLOBAL_VARS const backdiagonal2d_t backdiagonal2d; # endif // ! MLN_WO_GLOBAL_VARS + backdiagonal2d_t::backdiagonal2d_t() + { + } template <typename F> inline diff --git a/milena/mln/canvas/browsing/breadth_first_search.hh b/milena/mln/canvas/browsing/breadth_first_search.hh index 6f5327e..a637114 100644 --- a/milena/mln/canvas/browsing/breadth_first_search.hh +++ b/milena/mln/canvas/browsing/breadth_first_search.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2009, 2011 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -78,7 +79,11 @@ namespace mln /// Breadth-first search algorithm for graph, on vertices. struct breadth_first_search_t : public internal::graph_first_search_t<breadth_first_search_t, std::queue> - {}; + { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + breadth_first_search_t(); + }; extern const breadth_first_search_t breadth_first_search; @@ -88,6 +93,10 @@ namespace mln const breadth_first_search_t breadth_first_search; + breadth_first_search_t::breadth_first_search_t() + { + } + # endif // ! MLN_INCLUDE_ONLY } // end of namespace mln::canvas::browsing diff --git a/milena/mln/canvas/browsing/depth_first_search.hh b/milena/mln/canvas/browsing/depth_first_search.hh index 3d76633..ecb2c08 100644 --- a/milena/mln/canvas/browsing/depth_first_search.hh +++ b/milena/mln/canvas/browsing/depth_first_search.hh @@ -1,4 +1,4 @@ -// Copyright (C) 2008, 2009, 2010 EPITA Research and Development +// Copyright (C) 2008, 2009, 2010, 2011 EPITA Research and Development // Laboratory (LRDE) // // This file is part of Olena. @@ -79,7 +79,11 @@ namespace mln /// Breadth-first search algorithm for graph, on vertices. struct depth_first_search_t : public internal::graph_first_search_t<depth_first_search_t, std::stack> - {}; + { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + depth_first_search_t(); + }; extern const depth_first_search_t depth_first_search; @@ -93,6 +97,10 @@ namespace mln # endif // ! MLN_WO_GLOBAL_VARS + depth_first_search_t::depth_first_search_t() + { + } + # endif // ! MLN_INCLUDE_ONLY } // end of namespace mln::canvas::browsing diff --git a/milena/mln/canvas/browsing/diagonal2d.hh b/milena/mln/canvas/browsing/diagonal2d.hh index 056375b..246f930 100644 --- a/milena/mln/canvas/browsing/diagonal2d.hh +++ b/milena/mln/canvas/browsing/diagonal2d.hh @@ -81,6 +81,10 @@ namespace mln */ struct diagonal2d_t : public Browsing< diagonal2d_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + diagonal2d_t(); + template <typename F> void operator()(F& f) const; }; @@ -95,6 +99,10 @@ namespace mln # endif // ! MLN_WO_GLOBAL_VARS + diagonal2d_t::diagonal2d_t() + { + } + template <typename F> inline diff --git a/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh b/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh index 4c334ec..0037229 100644 --- a/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh +++ b/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // @@ -85,6 +86,10 @@ namespace mln */ struct dir_struct_elt_incr_update_t : public Browsing< dir_struct_elt_incr_update_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + dir_struct_elt_incr_update_t(); + template <typename F> void operator()(F& f) const; }; @@ -95,6 +100,10 @@ namespace mln const dir_struct_elt_incr_update_t dir_struct_elt_incr_update; + dir_struct_elt_incr_update_t::dir_struct_elt_incr_update_t() + { + } + template <typename F> inline void diff --git a/milena/mln/canvas/browsing/directional.hh b/milena/mln/canvas/browsing/directional.hh index 91b6ea6..8931cad 100644 --- a/milena/mln/canvas/browsing/directional.hh +++ b/milena/mln/canvas/browsing/directional.hh @@ -1,5 +1,5 @@ -// Copyright (C) 2007, 2008, 2009, 2010 EPITA Research and Development -// Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2010, 2011 EPITA Research and +// Development Laboratory (LRDE) // // This file is part of Olena. // @@ -89,6 +89,10 @@ namespace mln */ struct directional_t : public Browsing< directional_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + directional_t(); + template <typename F> void operator()(F& f) const; }; @@ -103,6 +107,10 @@ namespace mln # endif // ! MLN_WO_GLOBAL_VARS + directional_t::directional_t() + { + } + template <typename F> inline void diff --git a/milena/mln/canvas/browsing/fwd.hh b/milena/mln/canvas/browsing/fwd.hh index f89e75b..86c9bf8 100644 --- a/milena/mln/canvas/browsing/fwd.hh +++ b/milena/mln/canvas/browsing/fwd.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // @@ -71,6 +72,10 @@ namespace mln */ struct fwd_t : public Browsing< fwd_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + fwd_t(); + template <typename F> void operator()(F& f) const; }; @@ -81,6 +86,10 @@ namespace mln const fwd_t fwd; + fwd_t::fwd_t() + { + } + template <typename F> inline void diff --git a/milena/mln/canvas/browsing/hyper_directional.hh b/milena/mln/canvas/browsing/hyper_directional.hh index 6ad9a47..65bb794 100644 --- a/milena/mln/canvas/browsing/hyper_directional.hh +++ b/milena/mln/canvas/browsing/hyper_directional.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // @@ -73,6 +74,10 @@ namespace mln */ struct hyper_directional_t : public Browsing< hyper_directional_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + hyper_directional_t(); + template <typename F> void operator()(F& f) const; }; @@ -83,6 +88,10 @@ namespace mln const hyper_directional_t hyper_directional; + hyper_directional_t::hyper_directional_t() + { + } + template <typename F> inline void diff --git a/milena/mln/canvas/browsing/internal/graph_first_search.hh b/milena/mln/canvas/browsing/internal/graph_first_search.hh index 1bc64c6..8d74fa4 100644 --- a/milena/mln/canvas/browsing/internal/graph_first_search.hh +++ b/milena/mln/canvas/browsing/internal/graph_first_search.hh @@ -128,6 +128,7 @@ namespace mln util::vertex_id_t next(const S& stack) { + (void) stack; mln_assertion(0); /// Not defined yet! // mlc_abort(S)::check(); diff --git a/milena/mln/canvas/browsing/snake_fwd.hh b/milena/mln/canvas/browsing/snake_fwd.hh index ca6ecf2..06b72df 100644 --- a/milena/mln/canvas/browsing/snake_fwd.hh +++ b/milena/mln/canvas/browsing/snake_fwd.hh @@ -1,5 +1,5 @@ -// Copyright (C) 2007, 2008, 2009, 2010 EPITA Research and Development -// Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2010, 2011 EPITA Research and +// Development Laboratory (LRDE) // // This file is part of Olena. // @@ -83,6 +83,10 @@ namespace mln struct snake_fwd_t : public Browsing< snake_fwd_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + snake_fwd_t(); + template <typename F> void operator()(F& f) const; }; @@ -97,6 +101,9 @@ namespace mln # endif // ! MLN_WO_GLOBAL_VARS + snake_fwd_t::snake_fwd_t() + { + } template <typename F> inline diff --git a/milena/mln/canvas/browsing/snake_generic.hh b/milena/mln/canvas/browsing/snake_generic.hh index c4c1ae8..af9f799 100644 --- a/milena/mln/canvas/browsing/snake_generic.hh +++ b/milena/mln/canvas/browsing/snake_generic.hh @@ -1,5 +1,5 @@ -// Copyright (C) 2007, 2008, 2009, 2010 EPITA Research and Development -// Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2010, 2011 EPITA Research and +// Development Laboratory (LRDE) // // This file is part of Olena. // @@ -76,6 +76,10 @@ namespace mln struct snake_generic_t : public Browsing< snake_generic_t > { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + snake_generic_t(); + template <typename F> void operator()(F& f) const; @@ -91,6 +95,9 @@ namespace mln # endif // ! MLN_WO_GLOBAL_VARS + snake_generic_t::snake_generic_t() + { + } template <typename F> inline diff --git a/milena/mln/canvas/browsing/snake_vert.hh b/milena/mln/canvas/browsing/snake_vert.hh index 9e46c9c..416786c 100644 --- a/milena/mln/canvas/browsing/snake_vert.hh +++ b/milena/mln/canvas/browsing/snake_vert.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // @@ -90,7 +91,7 @@ namespace mln # ifndef MLN_INCLUDE_ONLY - const snake_vert_t snake_vert; + const snake_vert_t snake_vert = snake_vert_t(); template <typename F> inline diff --git a/milena/mln/convert/from_to.hxx b/milena/mln/convert/from_to.hxx index e99c3f6..a0e22df 100644 --- a/milena/mln/convert/from_to.hxx +++ b/milena/mln/convert/from_to.hxx @@ -69,7 +69,7 @@ namespace mln namespace algebra { template <unsigned n, typename T> class vec; - template <unsigned d, typename C> struct h_vec; + template <unsigned d, typename C> class h_vec; } namespace fun { diff --git a/milena/mln/core/image/dmorph/sub_image.hh b/milena/mln/core/image/dmorph/sub_image.hh index 088142d..d266ce6 100644 --- a/milena/mln/core/image/dmorph/sub_image.hh +++ b/milena/mln/core/image/dmorph/sub_image.hh @@ -44,7 +44,7 @@ namespace mln // Forward declaration. - template <typename I, typename S> struct sub_image; + template <typename I, typename S> class sub_image; namespace internal diff --git a/milena/mln/core/routine/init.hxx b/milena/mln/core/routine/init.hxx index 5cc6d12..1ff8067 100644 --- a/milena/mln/core/routine/init.hxx +++ b/milena/mln/core/routine/init.hxx @@ -37,7 +37,7 @@ namespace mln // Forward declarations. namespace fun { namespace i2v { template <typename T> class array; } } - namespace pw { namespace internal { template <typename F, typename S, typename E> struct image_base; } } + namespace pw { namespace internal { template <typename F, typename S, typename E> class image_base; } } namespace pw { template <typename F, typename S> class image; } template <typename I, typename F> struct image_if; diff --git a/milena/mln/data/was.median.hh b/milena/mln/data/was.median.hh index 2e470d5..73ee247 100644 --- a/milena/mln/data/was.median.hh +++ b/milena/mln/data/was.median.hh @@ -97,8 +97,8 @@ namespace mln med.take(input(q)); } - int& row = p.row(); - int& col = p.col(); + def::coord& row = p.row(); + def::coord& col = p.col(); bool fwd = true; mln_assertion(p.col() == min_col); @@ -155,8 +155,8 @@ namespace mln const unsigned half = win.length() / 2; point2d p; - int& row = p.row(); - int& col = p.col(); + def::coord& row = p.row(); + def::coord& col = p.col(); accu::stat::median_h<mln_vset(I)> med(input.values()); diff --git a/milena/mln/fun/v2v/hsl_to_rgb.hh b/milena/mln/fun/v2v/hsl_to_rgb.hh index 7d66d31..dbedcf4 100644 --- a/milena/mln/fun/v2v/hsl_to_rgb.hh +++ b/milena/mln/fun/v2v/hsl_to_rgb.hh @@ -1,5 +1,5 @@ -// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory -// (LRDE) +// Copyright (C) 2008, 2009, 2011 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // @@ -71,6 +71,9 @@ namespace mln { typedef T_rgb result; + + f_hsl_to_rgb_(); + template <typename T_hsl> T_rgb operator()(const T_hsl& hsl) const; @@ -94,6 +97,10 @@ namespace mln /// \} # endif // !MLN_WO_GLOBAL_VARS + template <typename T_rgb> + f_hsl_to_rgb_<T_rgb>::f_hsl_to_rgb_() + { + } /// This method implements the conversion from HSL to RGB as described by /// Max K. Agoston in `Computer Graphics and Geometric Modeling: diff --git a/milena/mln/literal/black.hh b/milena/mln/literal/black.hh index ab05cae..6ffbe33 100644 --- a/milena/mln/literal/black.hh +++ b/milena/mln/literal/black.hh @@ -1,4 +1,4 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development +// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development // Laboratory (LRDE) // // This file is part of Olena. @@ -42,6 +42,10 @@ namespace mln /// Type of literal black. struct black_t : public Literal<black_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + black_t(); + # ifdef MLN_NEW_VALUE_TYPES operator float() const; operator double() const; @@ -50,17 +54,21 @@ namespace mln /// Literal black. - extern const black_t& black; + extern const black_t black; # ifndef MLN_INCLUDE_ONLY # ifndef MLN_WO_GLOBAL_VARS - const black_t& black = black_t(); + const black_t black; # endif + black_t::black_t() + { + } + # ifdef MLN_NEW_VALUE_TYPES inline black_t::operator float() const diff --git a/milena/mln/literal/colors.hh b/milena/mln/literal/colors.hh index 099d2c7..52c05d0 100644 --- a/milena/mln/literal/colors.hh +++ b/milena/mln/literal/colors.hh @@ -1,4 +1,4 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development +// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development // Laboratory (LRDE) // // This file is part of Olena. @@ -42,146 +42,244 @@ namespace mln /// Type of literal red. struct red_t : public Literal<red_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + red_t(); }; /// Type of literal green. struct green_t : public Literal<green_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + green_t(); }; /// Type of literal blue. struct blue_t : public Literal<blue_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + blue_t(); }; /// Type of literal brown. struct brown_t : public Literal<brown_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + brown_t(); }; /// Type of literal lime. struct lime_t : public Literal<lime_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + lime_t(); }; /// Type of literal orange. struct orange_t : public Literal<orange_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + orange_t(); }; /// Type of literal pink. struct pink_t : public Literal<pink_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + pink_t(); }; /// Type of literal purple. struct purple_t : public Literal<purple_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + purple_t(); }; /// Type of literal teal. struct teal_t : public Literal<teal_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + teal_t(); }; /// Type of literal violet. struct violet_t : public Literal<violet_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + violet_t(); }; /// Type of literal cyan. struct cyan_t : public Literal<cyan_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + cyan_t(); }; /// Type of literal magenta. struct magenta_t : public Literal<magenta_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + magenta_t(); }; /// Type of literal yellow. struct yellow_t : public Literal<yellow_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + yellow_t(); }; /// Type of literal olive. struct olive_t : public Literal<olive_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + olive_t(); }; /// Literal red. - extern const red_t& red; + extern const red_t red; /// Literal green. - extern const green_t& green; + extern const green_t green; /// Literal blue. - extern const blue_t& blue; + extern const blue_t blue; /// Literal brown. - extern const brown_t& brown; + extern const brown_t brown; /// Literal lime. - extern const lime_t& lime; + extern const lime_t lime; /// Literal orange. - extern const orange_t& orange; + extern const orange_t orange; /// Literal pink. - extern const pink_t& pink; + extern const pink_t pink; /// Literal purple. - extern const purple_t& purple; + extern const purple_t purple; /// Literal teal. - extern const teal_t& teal; + extern const teal_t teal; /// Literal violet. - extern const violet_t& violet; + extern const violet_t violet; /// Literal cyan. - extern const cyan_t& cyan; + extern const cyan_t cyan; /// Literal magenta. - extern const magenta_t& magenta; + extern const magenta_t magenta; /// Literal yellow. - extern const yellow_t& yellow; + extern const yellow_t yellow; /// Literal olive. - extern const olive_t& olive; + extern const olive_t olive; # ifndef MLN_INCLUDE_ONLY + red_t::red_t() + { + } + + green_t::green_t() + { + } + + blue_t::blue_t() + { + } + + brown_t::brown_t() + { + } + + lime_t::lime_t() + { + } + + orange_t::orange_t() + { + } + + pink_t::pink_t() + { + } + + purple_t::purple_t() + { + } + + teal_t::teal_t() + { + } + + violet_t::violet_t() + { + } + + cyan_t::cyan_t() + { + } + + magenta_t::magenta_t() + { + } + + yellow_t::yellow_t() + { + } + + olive_t::olive_t() + { + } + # ifndef MLN_WO_GLOBAL_VARS - const red_t& red = red_t(); + const red_t red; - const green_t& green = green_t(); + const green_t green; - const blue_t& blue = blue_t(); + const blue_t blue; - const brown_t& brown = brown_t(); + const brown_t brown; - const lime_t& lime = lime_t(); + const lime_t lime; - const orange_t& orange = orange_t(); + const orange_t orange; - const pink_t& pink = pink_t(); + const pink_t pink; - const purple_t& purple = purple_t(); + const purple_t purple; - const teal_t& teal = teal_t(); + const teal_t teal; - const violet_t& violet = violet_t(); + const violet_t violet; - const cyan_t& cyan = cyan_t(); + const cyan_t cyan; - const magenta_t& magenta = magenta_t(); + const magenta_t magenta; - const yellow_t& yellow = yellow_t(); + const yellow_t yellow; - const olive_t& olive = olive_t(); + const olive_t olive; # endif diff --git a/milena/mln/literal/white.hh b/milena/mln/literal/white.hh index 9f19f3a..620a73a 100644 --- a/milena/mln/literal/white.hh +++ b/milena/mln/literal/white.hh @@ -42,6 +42,10 @@ namespace mln /// Type of literal white. struct white_t : public Literal<white_t> { + // This default constructor is needed for compilation with gcc + // 4.6.0, gcc 4.6.1 and Clang. + white_t(); + # ifdef MLN_NEW_VALUE_TYPES operator float() const; operator double() const; @@ -50,17 +54,21 @@ namespace mln /// Literal white. - extern const white_t& white; + extern const white_t white; # ifndef MLN_INCLUDE_ONLY # ifndef MLN_WO_GLOBAL_VARS - const white_t& white = white_t(); + const white_t white; # endif + white_t::white_t() + { + } + # ifdef MLN_NEW_VALUE_TYPES inline white_t::operator float() const diff --git a/milena/mln/topo/center_only_iter.hh b/milena/mln/topo/center_only_iter.hh index 9d52099..5e695ce 100644 --- a/milena/mln/topo/center_only_iter.hh +++ b/milena/mln/topo/center_only_iter.hh @@ -45,7 +45,7 @@ namespace mln { // Forward declaration. - template <unsigned D> struct face; + template <unsigned D> class face; /*----------------------------. diff --git a/milena/mln/topo/face.hh b/milena/mln/topo/face.hh index c9b58b0..1ea6a2b 100644 --- a/milena/mln/topo/face.hh +++ b/milena/mln/topo/face.hh @@ -49,7 +49,7 @@ namespace mln template <unsigned D> class complex; template <unsigned N, unsigned D> class n_face; template <unsigned N, unsigned D> class face_data; - template <unsigned N> struct algebraic_face; + template <unsigned N> class algebraic_face; /*-------. diff --git a/milena/mln/trait/images.hh b/milena/mln/trait/images.hh index d8e80b0..2ae9299 100644 --- a/milena/mln/trait/images.hh +++ b/milena/mln/trait/images.hh @@ -118,7 +118,7 @@ namespace mln // Morphers. template <typename I, typename F> struct image_if_base; template <typename I, typename D> struct decorated_image; - template <typename I, typename S> struct sub_image; + template <typename I, typename S> class sub_image; template <typename I> class safe_image; template <typename T, typename I> struct cast_image_; namespace value { template <unsigned n, typename I> struct stack_image; } -- 1.7.2.5
participants (1)
-
Guillaume Lazzara