Problem 823 - geant4.7.1.p01, problem with multimap class.
Summary: geant4.7.1.p01, problem with multimap class.
Status: CLOSED INVALID
Alias: None
Product: Geant4
Classification: Unclassified
Component: processes/hadronic/models (show other problems)
Version: 7.1
Hardware: Other AIX
: P2 normal
Assignee: dennis.herbert.wright
URL:
Depends on:
Blocks:
 
Reported: 2005-12-15 06:44 CET by isabelle.dupays
Modified: 2006-01-10 11:03 CET (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description isabelle.dupays 2005-12-15 06:44:09 CET
We try to install the library geant4 (version 7.1.p01) on our IBM SP4 computer
(AIX 5.2), and specially the gate software (version 1.2.0).

At the compilation of one of the gate module (src/GateMuonPhysics.cc), we have a
problem. The problem came from the file
source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiFragmentsPool.hh,
and specially from this line :
   std::multimap<const std::pair<G4int,G4int>, const G4VFermiFragment*,
  		 std::less<const std::pair<G4int,G4int> > >::iterator

We have to correct the programm (suppress the const attribute) :
std::multimap<std::pair<G4int,G4int>, const G4VFermiFragment*,
		 std::less<std::pair<G4int,G4int> > >::iterator

We reproduce this on an simple example. This example works if we use the g++
compiler (Compaq Linux), not with the c++ compiler (c++) of our NEC SX5, not
with the xlC compiler of our IBM SP4.

IBM_SP4 : more map.C
#include <map>

using namespace std;

main()
{
  multimap<const pair<int,int>, const int> iterator;
  // Correction multimap<pair<int,int>, const int> iterator;
  return 0;

}
IBM_SP4 : xlC -c map.C
xlC:
"/usr/vacpp/include/xmemory", line 291.23: 1540-0401 (S) The member
"std::allocator<const std::pair<int,int> >::address(const_reference) const" is
already declared.
"/usr/vacpp/include/xmemory", line 289.17: 1540-0425 (I) "address" is defined on
line 289 of "/usr/vacpp/include/xmemory".
"/usr/vacpp/include/xtree", line 141.17: 1540-0700 (I) The previous message was
produced while processing "class std::allocator<const std::pair<int,int> >".
"/usr/vacpp/include/xtree", line 124.15: 1540-0700 (I) The previous message was
produced while processing "class std::_Tree<std::_Tmap_traits<const
std::pair<int,int>,const int,std::less<const std::pair<int,int>
>,std::allocator<std::pair<const std::pair<int,int>,const int> >,1> >".
"/usr/vacpp/include/map", line 161.15: 1540-0700 (I) The previous message was
produced while processing "class std::multimap<const std::pair<int,int>,const
int,std::less<const std::pair<int,int> >,std::allocator<std::pair<const
std::pair<int,int>,const int> > >".
"map.C", line 5.1: 1540-0700 (I) The previous message was produced while
processing "main()".


NEC SX5 : c++ -c map.C
"/usr/include/C++/xmemory", line 62: fatal(403): function
          "std::allocator<_Ty>::address(std::allocator<_Ty>::reference) const
          [with _Ty=std::_Tree<std::_Tmap_traits<const std::pair<int, int>,
          const int, std::less<const std::pair<int, int>>,
          std::allocator<std::pair<const std::pair<int, int>, const int>>,
          true>>::key_type]" has already been declared
        const_pointer address(const_reference __X) const
                      ^
          detected during:
            instantiation of class "std::allocator<_Ty> [with
                      _Ty=std::_Tree<std::_Tmap_traits<const std::pair<int,
                      int>, const int, std::less<const std::pair<int, int>>,
                      std::allocator<std::pair<const std::pair<int, int>,
                      const int>>, true>>::key_type]" at line 79 of
                      "/usr/include/C++/xtree"
            instantiation of class "std::_Tree<_Tr> [with
                      _Tr=std::_Tmap_traits<const std::pair<int, int>, const
                      int, std::less<const std::pair<int, int>>,
                      std::allocator<std::pair<const std::pair<int, int>,
                      const int>>, true>]" at line 104 of
                      "/usr/include/C++/map"
            instantiation of class "std::multimap<__K, _Ty, _Pr, __A> [with
                      __K=const std::pair<int, int>, _Ty=const int,
                      _Pr=std::less<const std::pair<int, int>>,
                      __A=std::allocator<std::pair<const std::pair<int, int>,
                      const int>>]" at line 8 of "map.C"

Isabelle DUPAYS  - Assistance IDRIS
------------------------------------------------------------------------
 Tel   : 01.69.35.85.52   Fax   : 01.69.85.37.75
 E-Mail: Isabelle.Dupays@idris.fr
 http://www.idris.fr
 Adresse: IDRIS - Bat.506 - BP 167 - 91403 Orsay Cedex - France

------------------------------------------------------------------------
Comment 1 dennis.herbert.wright 2006-01-05 18:19:59 CET
Geant4 does not officially support these platforms, so we cannot reproduce
your problem.  However, I will try to find someone who can help.
Comment 2 dennis.herbert.wright 2006-01-10 11:03:59 CET
I will refer your problem to two people who have used Geant4 on AIX in the
recent past.