[Dune] Doch kein gcc-Bug!

Thimo Neubauer thimo at debian.org
Mon Nov 17 22:29:34 CET 2003


Hallo,

ich habe inzwischen eine Antwort von der gcc-help-Mailingliste
bekommen, die hoffentlich unsere verbleibenden Probleme mit dem gcc
löst: mein Testfall war (kurz gefasst):

template <int dim>
void foo2() {
  Entity<dim> e;

  // works like above
  e.other();
  e.print("test");

  // fails with syntax error
  e.test<1>();
};

Das Problem rührt daher, dass es eine Doppeldeutigkeit mit dem '<'
gibt. Nach Standard muss es als Template-Parameterliste interpretiert
werden, wenn davor der Name eines Templates steht. In der obigen
Funktion hat "e" einen Typ, der von einem Parameter abhängig ist und
wird daher nicht als Templatename interpretiert, wenn er dann die
Zeile mit kleiner-als interpretiert kracht's.

Auflösen lässt sich diese Doppeldeutigkeit mit dem
"template"-keyword. Es sieht zwar (meiner Meinung nach) syntaktisch
sehr schräg aus, kompiliert aber:

template <int dim>
void foo2() {
  Entity<dim> e;

  // ...

  e.template test<1>();
};

Wenn wir Dune also reichlich mit "typename" und "template" würzen
sollte es mal langsam durch den gcc gehen!

Gruss
   Thimo

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20031117/0e748470/attachment.sig>


More information about the Dune mailing list