
* mln/core/concept/proxy.hxx (internal::helper_unproxy_rec< P, true >::P_) (internal::helper_unproxy_rec< const P, true >::P_): Remove these intermediate typedefs... (internal::helper_unproxy_rec< P, true >::ret) (internal::helper_unproxy_rec< const P, true >::ret): ...to inline these definitions. * mln/util/array.hh (internal::subject_impl<util::array<T>&, E>::operator()) (internal::subject_impl<util::array<T>&, E>::operator[]) (internal::subject_impl<const util::array<T>&, E>::operator() const) (internal::subject_impl<const util::array<T>&, E>::operator[] const): * mln/core/site_set/p_graph_piter.hh (internal::subject_impl< const p_graph_piter<S,I>&, E >::graph): Use the exact same return type as in the declaration. --- milena/ChangeLog | 20 ++++++++++++++++++++ milena/mln/core/concept/proxy.hxx | 6 ++---- milena/mln/core/site_set/p_graph_piter.hh | 2 +- milena/mln/util/array.hh | 8 ++++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index 4141442..9f07662 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,5 +1,25 @@ 2010-11-29 Roland Levillain <roland@lrde.epita.fr> + Work around g++ 4.5 deficiencies to compile Milena. + + * mln/core/concept/proxy.hxx + (internal::helper_unproxy_rec< P, true >::P_) + (internal::helper_unproxy_rec< const P, true >::P_): + Remove these intermediate typedefs... + (internal::helper_unproxy_rec< P, true >::ret) + (internal::helper_unproxy_rec< const P, true >::ret): + ...to inline these definitions. + * mln/util/array.hh + (internal::subject_impl<util::array<T>&, E>::operator()) + (internal::subject_impl<util::array<T>&, E>::operator[]) + (internal::subject_impl<const util::array<T>&, E>::operator() const) + (internal::subject_impl<const util::array<T>&, E>::operator[] const): + * mln/core/site_set/p_graph_piter.hh + (internal::subject_impl< const p_graph_piter<S,I>&, E >::graph): + Use the exact same return type as in the declaration. + +2010-11-29 Roland Levillain <roland@lrde.epita.fr> + Fix forward declarations in complex piters. * mln/core/site_set/p_complex_piter.hh, diff --git a/milena/mln/core/concept/proxy.hxx b/milena/mln/core/concept/proxy.hxx index d50b3aa..2f77cec 100644 --- a/milena/mln/core/concept/proxy.hxx +++ b/milena/mln/core/concept/proxy.hxx @@ -92,16 +92,14 @@ namespace mln template <typename P> struct helper_unproxy_rec< P, true > { - typedef mln_exact(P) P_; - typedef typename P_::HOT_actual_subject ret; + typedef mln_exact(P)::HOT_actual_subject ret; static ret on(P& p); }; template <typename P> struct helper_unproxy_rec< const P, true > { - typedef mln_exact(P) P_; - typedef mlc_const(typename P_::HOT_actual_subject) ret; + typedef mlc_const(mln_exact(P)::HOT_actual_subject) ret; static ret on(const P& p); }; diff --git a/milena/mln/core/site_set/p_graph_piter.hh b/milena/mln/core/site_set/p_graph_piter.hh index ec082a6..12b7e0d 100644 --- a/milena/mln/core/site_set/p_graph_piter.hh +++ b/milena/mln/core/site_set/p_graph_piter.hh @@ -257,7 +257,7 @@ namespace mln template <typename S, typename I, typename E> inline - const typename S::graph_t& + const typename subject_impl< const p_graph_piter<S,I>&, E >::graph_t& subject_impl< const p_graph_piter<S,I>&, E >::graph() const { return exact_().get_subject().graph(); diff --git a/milena/mln/util/array.hh b/milena/mln/util/array.hh index b64511e..0fe34e7 100644 --- a/milena/mln/util/array.hh +++ b/milena/mln/util/array.hh @@ -846,7 +846,7 @@ namespace mln template <typename T, typename E> inline - typename util::array<T>::mutable_result + typename subject_impl<util::array<T>&, E>::mutable_result subject_impl<util::array<T>&, E>::operator()(unsigned i) { return exact_().get_subject()(i); @@ -854,7 +854,7 @@ namespace mln template <typename T, typename E> inline - typename util::array<T>::mutable_result + typename subject_impl<util::array<T>&, E>::mutable_result subject_impl<util::array<T>&, E>::operator[](unsigned i) { return exact_().get_subject()[i]; @@ -919,7 +919,7 @@ namespace mln template <typename T, typename E> inline - typename util::array<T>::ro_result + typename subject_impl<const util::array<T>&, E>::ro_result subject_impl<const util::array<T>&, E>::operator()(unsigned i) const { return exact_().get_subject()(i); @@ -927,7 +927,7 @@ namespace mln template <typename T, typename E> inline - typename util::array<T>::ro_result + typename subject_impl<const util::array<T>&, E>::ro_result subject_impl<const util::array<T>&, E>::operator[](unsigned i) const { return exact_().get_subject()[i]; -- 1.5.6.5