IBM Compiler Simplesttest
Codes
Location:
~/src/petsc-dev-xlc/src/dm/mesh/examples/tutorials
Build the Code:
make -f Makefile simplestTest
simplestTest.cxx
#include <Mesh.hh> int main() { return 0; }
makefile
CPPFLAGS = -w
include ${PETSC_DIR}/conf/variables
include ${PETSC_DIR}/conf/rules
simplestTest: simplestTest.o chkopts
-${CLINKER} -o simplestTest simplestTest.o ${PETSC_SNES_LIB}
${RM} -f simplestTest.o
Process
Initial
"/home/guntaka/src/petsc-dev-xlc/include/sieve/Mesh.hh", line 110.30: 1540-1110 (S) The referenced type "ALE::Bundle" contains a circular reference back to "".
/home/guntaka/src/petsc-dev-xlc/include/sieve/Mesh.hh:
110 typedef NumberingFactory<this_type> MeshNumberingFactory;
The bigger code is
template<typename Sieve_, typename RealSection_ = Section<typename Sieve_::point_type, double>, typename IntSection_ = Section<typename Sieve_::point_type, int>, typename ArrowSection_ = UniformSection<MinimalArrow<typename Sieve_::point_type, typename Sieve_::point_type>, int> > class Bundle : public ALE::ParallelObject { public: ... typedef Bundle<Sieve_,RealSection_,IntSection_,ArrowSection_> this_type; //this is fine. Confirmed with test codes. It is OK to define the template as type of itself. ... typedef typename ALE::SieveAlg<this_type> sieve_alg_type; //this is fine ... typedef NumberingFactory<this_type> MeshNumberingFactory;//problem here. typedef typename MeshNumberingFactory::numbering_type numbering_type; ... }
In ALE_containers.hh
namespace ALE { class ParallelObject { ... } }
In Numbering.hh:
namespace ALE { ... template<typename Bundle_, typename Value_ = int, typename Alloc_ = typename Bundle_::alloc_type> class NumberingFactory : ALE::ParallelObject { public: ... typedef Numbering<point_type, value_type, alloc_type> numbering_type; } ... }
page revision: 6, last edited: 12 Apr 2010 18:46