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;
 
}
...
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License