[Dune] compiler huddel

Christian Engwer christi at uni-hd.de
Tue Feb 22 10:29:18 CET 2005


> Wir sind schon Helden :-)  Ich glaube wenige Gruppen finden
> so viele Compilerfehler wie wir.  Kannst Du mir in zwei Sätzen
> erklären was gehen sollte und es nicht tut?
> Da sich gcc 4.0 ja gerade im 'Bugfix-Stadium' befindet sollten
> wir doch gute Chancen haben, den Fehler schnell repariert zu
> bekommen.

Folgendes kompiliert nicht mit dem gcc sollte aber meiner Meinung nach
(so wie ich den Standard und die Beispile dort interpretiere):

struct A
{
  template <int i> int hurz(B<A,i> & b);
};

template<class T, int i>
struct B
{
  friend int T::template hurz<>(::B<T,i> &); // Error: : `hurz' was not declared in this scope
};

Die Friend Deklaration benötigt hier ja zwei Templateparameter... die
Klasse in der die Friendmethode deklariert ist und den
Templateparameter der an die Friendmethode übergeben werden soll.

Es gibt zwei andere Programme, die jeweils nur einen der
Templateparameter verwenden und da geht es.

struct A
{
  int hurz(B<A> & b);
};

template<class T>
struct B
{
  friend int T::hurz(::B<T> &);
};

und

struct A
{
  template <int i> int hurz(B<i> & b);  
};

template<class T>
struct B
{
  friend int A::template hurz<>(::B<i> &);
};

Wenn jemand weiter rumspielen möchte, kann ich ihm ein tar mit dem
kompletten Testcode schicken.

Tschüß Christian




More information about the Dune mailing list