I had to remove a declaration of "memrchr" from simgear/metar/Local.h to compile under gcc 3.2 (SuSE Linux 8.1). There are lots of semi-standard functions declared there that probably shouldn't be.

To fix some warnings I added "typename" into some "typedef" lines. I am not sure about the correctness or the portability of these - especially the "typename" additions. Can anyone evaluate these?

These were the errors:

c++ -DHAVE_CONFIG_H -I. -I. -I../../simgear -I../.. -I/usr/X11R6/include -O1 -finline-limit-256 -finline-functions -Wall -pedantic -Wpointer-arith -D_REENTRANT -c -o Charcmp.o `test -f 'Charcmp.cpp' || echo './'`Charcmp.cpp
In file included from Charcmp.cpp:1:
Local.h:1118: declaration of `void* memrchr(const void*, int, unsigned int)' throws different exceptions
/usr/include/string.h:72: than previous declaration `void* memrchr(const void*, int, unsigned int) throw ()'

and warnings:

SkyBVTree.hpp:217: warning: `typename SkyBaseBVTree<Object, BoundingVolume>::BV' is implicitly a typename
SkyBVTree.hpp:217: warning: implicit typename is deprecated, please see the documentation for details
(etc.)

- Julian
Index: simgear/metar/Local.h
===================================================================
RCS file: /var/cvs/SimGear-0.3/SimGear/simgear/metar/Local.h,v
retrieving revision 1.1.1.1
diff -u -3 -p -d -r1.1.1.1 Local.h
--- simgear/metar/Local.h       7 Sep 2002 02:58:19 -0000       1.1.1.1
+++ simgear/metar/Local.h       10 Nov 2002 19:28:47 -0000
@@ -1115,7 +1115,7 @@ int stregion(int);
 int ccregion(char *);
 char *rgnname(int);
  
-void *memrchr(const void *, int, size_t);
+//void *memrchr(const void *, int, size_t);
  
 bool sysmonms(char *, char *, ...);
 bool sysmoncl(char *);
Index: simgear/sky/clouds3d/SkyBVTree.hpp
===================================================================
RCS file: /var/cvs/SimGear-0.3/SimGear/simgear/sky/clouds3d/SkyBVTree.hpp,v
retrieving revision 1.2
diff -u -3 -p -d -r1.2 SkyBVTree.hpp
--- simgear/sky/clouds3d/SkyBVTree.hpp  14 Sep 2002 16:03:39 -0000      1.2
+++ simgear/sky/clouds3d/SkyBVTree.hpp  10 Nov 2002 19:28:49 -0000
@@ -214,9 +214,9 @@ class SkyBVTree : public SkyBaseBVTree<O
 {
 public:
   typedef SkyBaseBVTree<Object, BoundingVolume> BaseTree;
-  typedef BaseTree::BV BV;
-  typedef BaseTree::NodeObject NodeObject;
-  typedef BaseTree::Node Node;
+  typedef typename BaseTree::BV BV;
+  typedef typename BaseTree::NodeObject NodeObject;
+  typedef typename BaseTree::Node Node;
   
   void Clear()
   {
Index: simgear/sky/clouds3d/SkyBVTreeSplitter.hpp
===================================================================
RCS file: /var/cvs/SimGear-0.3/SimGear/simgear/sky/clouds3d/SkyBVTreeSplitter.hpp,v
retrieving revision 1.2
diff -u -3 -p -d -r1.2 SkyBVTreeSplitter.hpp
--- simgear/sky/clouds3d/SkyBVTreeSplitter.hpp  14 Sep 2002 16:03:39 -0000      1.2
+++ simgear/sky/clouds3d/SkyBVTreeSplitter.hpp  10 Nov 2002 19:28:50 -0000
@@ -52,7 +52,7 @@ template<class Object>
 class SkyBoundingBoxSplitter
 {
 public:
-       typedef SkyBaseBVTree<Object, SkyMinMaxBox>::NodeObject NodeObjectBox;
+       typedef typename SkyBaseBVTree<Object, SkyMinMaxBox>::NodeObject NodeObjectBox;
        //typedef SkyBaseBVTree<Object, SkyBoundingSphere>::NodeObject 
NodeObjectSphere;
 
 #if _MSC_VER == 1200
@@ -183,7 +183,7 @@ class SkyAABBTreeSplitter
 {
 public:
        typedef SkyMinMaxBox BV;
-       typedef SkyBaseBVTree<Object, BV>::NodeObject NodeObject;
+       typedef typename SkyBaseBVTree<Object, BV>::NodeObject NodeObject;
 
        SkyAABBTreeSplitter(const NodeObject* pObjs, unsigned int iNumObjs) : 
_splitter(pObjs, iNumObjs) {}
 


Reply via email to