* 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(a)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(a)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